内部转发器我有一个html复选框,现在我想在代码隐藏文件中访问此复选框以检查是否选中了复选框。但我不想用户runat =“server”标签,我怎么能这样做我的代码如上
<input id="cbfdgroup" class="checkitem" type="checkbox" name="fd_cb_group[]" value='<%#Eval("FoodItemsUid") %>'>
在代码隐藏文件中我试图像这样访问
foreach (RepeaterItem ri in rptMenu.Items)
{
if (ri.ItemType == ListItemType.Item || ri.ItemType == ListItemType.AlternatingItem)
{
HtmlInputCheckBox chk = (HtmlInputCheckBox)ri.FindControl("cbfdgroup");
if (chk.Checked)
{
}
}
}
但这是错误的,因为对象引用未设置为对象的实例..如何在不使用runat =“server”标记的情况下在代码隐藏文件中获得此控件
答案 0 :(得分:1)
我不相信你的要求是可能的。 runat=server
是使控件可用于后面的代码的原因。如果删除该属性,则后面的代码无法以任何方式识别控件。
再解释一下:
代码隐藏在服务器上执行。因此,您要在代码隐藏中访问的任何控件都必须具有runat=server
才能使用。这两者是不可分割的。
答案 1 :(得分:1)
这是不可能的。为了澄清,runat="server"
部分正在做它所说的。它表示该控件应该可供服务器使用和访问。
代码隐藏中的代码是由服务器运行/执行的代码。所以从逻辑上讲,如果服务器无法使用控件,那么它就不能被代码操纵(因此它也不会出现在intellisense中。)
答案 2 :(得分:0)
您无需读取转发器中的项目
假设您正在向服务器发送回发(http post)
您可以通过以下方式阅读所选复选框:
string x = Request["fd_cb_group[]"];
它将超过1,它将用逗号分隔,只需使用split获取所选值的字符串列表。
整个事情就是这样:
protected void Button1_Click(object sender, EventArgs e)
{
string x = Request["fd_cb_group[]"];
string[] allSelectedOnes = x.Split(',');
foreach(string item in allSelectedOnes)
{
//your custom code for the selected checkboxes
}
}