【发布时间】:2014-08-12 12:16:39
【问题描述】:
asp:CheckBox控件中的ClientIDMode属性有什么用?我为此找到了 AutoID, Inherit, Predictable, and Static 的值。
我主要是在寻找它是如何在 HTML 中呈现的?谁能解释一下属性和值?
【问题讨论】:
asp:CheckBox控件中的ClientIDMode属性有什么用?我为此找到了 AutoID, Inherit, Predictable, and Static 的值。
我主要是在寻找它是如何在 HTML 中呈现的?谁能解释一下属性和值?
【问题讨论】:
这是 MS 如何计算 .net 控件名称本身的 ID。 MSDN
由于 ASP.net 页面放在服务器上并发送到客户端 MS 将根据可变数量的条件命名 id,它们是否在母版页中,它们是否在用户控制器中,中继器, 等等。
既然你不能有重复的 id,你如何处理一个放在中继器内的 .net 控件?你需要有一个命名算法。有些人愚蠢地使用渲染的ID(ct100_*)而不是使用getElementID通过javascript来操作元素。我不知道他们为什么公开这些算法,而不是仅仅说一切都将是 1 算法。也许有人知道他们为什么要公开不同的算法。
【讨论】:
id 生成示例:
网络表单:
<script runat="server">
protected void Page_Load(object sender, EventArgs e)
{
lstMain.DataSource = new string[] { "a", "b" };
lstMain.DataBind();
}
</script>
<asp:Content ContentPlaceHolderID="ContentPlaceHolder1" runat="server">
<asp:ListView ID="lstMain" runat="server">
<ItemTemplate>
<asp:CheckBox ID="chkFour" runat="server" ClientIDMode="AutoID" />
<asp:CheckBox ID="chkFive" runat="server" ClientIDMode="Predictable" />
<asp:CheckBox ID="chkSix" runat="server" ClientIDMode="Static" />
</ItemTemplate>
</asp:ListView>
</asp:Content>
结果:
<input id="ctl00_ContentPlaceHolder1_lstMain_ctrl0_chkFour" type="checkbox" name="ctl00$ContentPlaceHolder1$lstMain$ctrl0$chkFour" />
<input id="ctl00_ContentPlaceHolder1_lstMain_ctrl0_chkFive_0" type="checkbox" name="ctl00$ContentPlaceHolder1$lstMain$ctrl0$chkFive" />
<input id="chkSix" type="checkbox" name="ctl00$ContentPlaceHolder1$lstMain$ctrl0$chkSix" />
<input id="ctl00_ContentPlaceHolder1_lstMain_ctrl1_chkFour" type="checkbox" name="ctl00$ContentPlaceHolder1$lstMain$ctrl1$chkFour" />
<input id="ctl00_ContentPlaceHolder1_lstMain_ctrl1_chkFive_1" type="checkbox" name="ctl00$ContentPlaceHolder1$lstMain$ctrl1$chkFive" />
<input id="chkSix" type="checkbox" name="ctl00$ContentPlaceHolder1$lstMain$ctrl1$chkSix" />
将 id 传递给 JS:
<script type="text/javascript">
var autoId = '<%=someControl.ClientID%>';
var predictableId = '<%=someControl.ClientID%>';
var staticId = 'someControl';
</script>
【讨论】:
Eg: ClientIDMode="xyz"
id 值?没有呈现为单独的属性?
tooltip 属性