ContentPlaceHolderID作为前缀添加到我的表单字段中

时间:2012-05-18 18:02:02

标签: asp.net .net

我在我的aspx页面添加了一个asp:Content标记。

<asp:Content ID="Step1Content" ContentPlaceHolderID="MainContent" Runat="Server">

我有一个类似下面的javascript,

   function switchAllMenu() {
            var ids = new Array('divOut', 'divQOR', 'divPop', 'divRD', 'divCst', 'divRep', 'divCnt');
            var i, el, newObj, el1;
            if (document.getElementById('aSwitchAllMenu').value == "Expand All") {
                document.getElementById('aSwitchAllMenu').value = "Collapse All";
                for (i = 0; i < ids.length; i++) {
                    el = document.getElementById(ids[i]);
                    newObj = ids[i].replace("div", "li");
                    el1 = document.getElementById(newObj);
                    el.style.display = '';
                    el1.className = 'active';
                }
            }
            else {
                document.getElementById('aSwitchAllMenu').value = "Expand All";
                for (i = 0; i < ids.length; i++) {
                    el = document.getElementById(ids[i]);
                    newObj = ids[i].replace("div", "li");
                    el1 = document.getElementById(newObj);
                    el.style.display = 'none';
                    el1.className = '';
                }

当我单击expandAll或collapseall时,相应的Div必须展开和折叠。但是,由于内容占位符已添加到页面中,因此它前缀为字段名称,而我的JavaScript无效。我应该在这个javascript中做出什么改变,所以我的扩展崩溃工作。

我的字段名称如下所示,MainContent_divOut,MainContent_divQOR ...我应该使用“MainContent_”作为前缀来修改var id。然而,即便是第一个字段'divOut'也没有工作。

2 个答案:

答案 0 :(得分:5)

您可以在web.config中修复它,具体取决于您的asp.net版本, 如果您使用的是4.0,则可以将其设置为内联, <asp:TextBox runat="server" ClientIDMode="static" id="txt1" />

这会阻止将前缀添加到您的控件ID中。

more detail here

答案 1 :(得分:1)

使用<%=Element.ClientID%>例如。使用<%=divOut.ClientID%>获取页面上任何服务器端控件的客户端ID。