C#获取动态生成的CheckBox值
给你推荐两种方法,一种是向服务器容器控件里添加子控件(即向runat=server的控件的Controls里添加控件),第二种是就是你的这种拼接HTML的方法不过这种方法必须设置控件的name属性,然后在Request.Form["控件的name"]里获得控件的值,推荐使用第一种方法,更直观一些,第二种无法记录提交以后的状态,代码如下
第一种
后台
usingSystem.Web.UI.HtmlControls; protectedvoidPage_Load(objectsender,EventArgse) { for(inti=0;i<4;i++) { HtmlInputCheckBoxhtmlInputCheckBox=newHtmlInputCheckBox();//这里用CheckBox也是一样的 htmlInputCheckBox.ID="check"+i; Container.Controls.Add(htmlInputCheckBox); } } protectedvoidButton1_Click(objectsender,EventArgse) { for(inti=0;i<4;i++) { Label1.Text+="<br/>"+(Container.FindControl("check"+i)asHtmlInputCheckBox).Checked.ToString(); } }
前台
<formid="form1"runat="server"> <divid="Container"runat="server"> </div> <asp:ButtonID="Button1"runat="server"Text="Button"onclick="Button1_Click"/> <asp:LabelID="Label1"runat="server"></asp:Label> </form>
第二种
后台
publicstringGetCheckBox() { return"<inputname=\"Checkbox1\"type=\"checkbox\"/>";//这里必须设置name,Id没有用 } protectedvoidButton1_Click(objectsender,EventArgse) { if(Request.Form["Checkbox1"]==null)//如果Checkbox1为未选中状态Request.Form["Checkbox1"]值为null { Label1.Text+="<br/>Fasle"; } else//如果Checkbox1为选中状态Request.Form["Checkbox1"]值为on { Label1.Text+="<br/>True"; } }
前台
<formid="form1"runat="server"> <div> <%=GetCheckBox()%> </div> <asp:ButtonID="Button1"runat="server"Text="Button"OnClick="Button1_Click"/> <asp:LabelID="Label1"runat="server"></asp:Label> </form>