Asp.net 母版页内带有runat=server的html标记

Asp.net 母版页内带有runat=server的html标记,asp.net,master-pages,Asp.net,Master Pages,Masterpage.cs无法识别带有runat=server的html标记 例如,在母版页中: <input type="checkbox" runat="server" id="ckb" /> 使用ckb 当前上下文中不存在名称“ckb” 更新输入在中继器的内 如何找到他并更改他的属性?您为控件提供的id是ckb,而不是checkAll ckb将在代码隐藏中被识别。如果您在基于模板的控件(例如)中使用控件,那么您将无法直接访问控件,就像您在页面/用户控件/母版页上直接放置

Masterpage.cs无法识别带有
runat=server的html标记

例如,在母版页中:

 <input type="checkbox" runat="server" id="ckb" />

使用
ckb

当前上下文中不存在名称“ckb”

更新输入在中继器的


如何找到他并更改他的属性?

您为控件提供的
id
ckb
,而不是
checkAll


ckb
将在代码隐藏中被识别。

如果您在基于
模板的控件(例如
)中使用控件,那么您将无法直接访问控件,就像您在页面/用户控件/母版页上直接放置控件一样

相反,您需要在模板控件本身上使用
FindControl

例如,如果设置一个
ItemDataBind
事件处理程序,则可以执行以下操作

protected void repeater_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
  if(e.Item.ItemType == ListItemType.Header)
  {
    HtmlInputCheckBox chk = (HtmlInputCheckBox)e.Item.FindControl("chk");
  }
}

您能提供导致错误的代码行吗?这是我的第一个想法(以及删除之前的注释)。。。但OP实际上说的是“当使用ckb时”,所以我愿意让他们对这一点有所怀疑one@freefaller-可能,但错误消息肯定表明情况并非如此。我发现了问题,输入位于中继器标头内,如何找到他并更改其属性?@baaroz-
(HtmlInputCheckBox)e.FindControl(“ckb”)