タグの外側でコンテンツ (子コントロール) をレンダリングするカスタム コントロールに問題があり、実行時エラーや問題が発生します。できる限り単純化するために、以下のコントロールを作成しましたが、まったく同じ問題があります。Control、WebControl、および CompositeControl から継承しようとしましたが、すべて同じ問題が発生しました。私が間違っていることは明らかだと思います...助けてくれてありがとう。
using System;
using System.Web.UI.WebControls;
namespace MyControls
{
public class TestControl : CompositeControl
{
protected override void CreateChildControls()
{
Controls.Clear();
Controls.Add(new Button() { Text = "TestControl!" });
ClearChildViewState();
}
}
}
コントロールをプログラムで追加すると、forms タグの外側にマークアップが作成されます。マークアップによるコントロールの追加は正しく機能します。
protected void Page_Load(object sender, EventArgs e)
{
Controls.Add(new TestControl());
}
...
<body>
<form name="PageForm" method="post" action="default.aspx" id="PageForm">
<div>
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwUKMTE5MDEwMTE5MWRkg0FopdvLhTPGxHkGm1xCCOVQz6A=" />
</div>
<div>
</div>
</form>
</body>
</html>
<span><input type="submit" name="ctl04$ctl00" value="TestControl!" /></span>