CheckBox中的ClientIDMode

时间:2014-08-12 12:16:39

标签: asp.net checkbox

ClientIDMode控件中 asp:CheckBox 属性的用途是什么?我为此找到了值AutoID, Inherit, Predictable, and Static

主要是我在寻找如何在HTML中呈现?有人可以解释一下属性和值吗?

2 个答案:

答案 0 :(得分:0)

这是MS如何计算.net控件名称本身的ID。 MSDN

由于ASP.net页面在服务器上放在一起并发送到客户端MS将基于可变数量的条件命名id,它们是否在主页面中,是否在用户控制器中,转发器中, 等等。

由于你不能拥有重复的id,你如何处理放在转发器内的.net控件?你需要有一个命名算法。有些人愚蠢地使用渲染的ID(ct100_ *)而不是使用getElementID来通过javascript操作元素。我不知道为什么他们暴露这些算法而不只是说一切都将是1算法。也许有人可以解释为什么他们暴露了不同的算法。

答案 1 :(得分:0)

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>