我已经从后面的代码动态创建了一个html输入复选框,在将复选框渲染到aspx页面之后,我无法在按钮点击事件中获得这些复选框的已检查属性。一周是一周的结果。这里是示例代码。
HtmlInputCheckBox chkbx = new HtmlInputCheckBox();
chkbx.Attributes.Add("id", ((week)i).ToString());
chkbx.Attributes.Add("runat", "server");
chkbx.Attributes.Add("name", ((week)i).ToString());
chkbx.Attributes.Add("value", "checked");
HtmlGenericControl label = new HtmlGenericControl("label");
label.Attributes.Add("for", ((week)i).ToString());
if (i == 1 || i == 7)
{
label.Attributes.Add("class", "dow disabled");
label.Attributes.Add("disabled", "true");
}
else
{
label.Attributes.Add("class", "dow");
chkbx.Checked = true;
}
label.InnerText = ((week)i).ToString().Substring(0,2);
_dowcontrol.Controls.Add(chkbx);
_dowcontrol.Controls.Add(label);
ASPX页面
<body>
<form id="form1" runat="server" method = "post">
<t2:mycontrol ID="SampleControl" runat="server" >
</t2:mycontrol>
<asp:Button ID="Button1" runat="server" Text="Button" onclick="Button1_Click" />
</form>
</body>
ASPX.CS页面 按钮点击内应该是什么?
尝试
Request.Form["***"], FindControl("***")
答案 0 :(得分:0)
为了让您动态创建的控件与页面生命周期中的视图状态,事件和其他阶段进行交互,需要在Init
事件中创建它们。在生命周期的后期创建这些控件将使他们不参与后期值绑定,视图状态绑定等。另请注意,您必须在每次回发时重新创建控件。
protected void Page_Init(object sender, EventArgs e)
{
// Do any dynamic control re/creation here.
}