ContentPlaceHolderID已添加到我的所有字段ID中。如何控制它们?

时间:2012-05-08 17:27:55

标签: asp.net .net

我有使用重复代码的aspx页面。所以我把它们放在一个主文件上并在所有其他文件中引用它。我已经使用了所有其他页面,其中包括母版页,

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

我的问题是现在所有的字段ID都有ContentPlaceHolderID_fieldName的后缀,因此我的javascript无效。

<input id='chkRaces_1' type='checkbox' runat='server' onclick="enableShow50();" /><label for='chkRaces_1'>American Indian or Alaska Native</label><br />

当我调试时,它看起来像,

<input id="MainContent_chkRaces_1" type="checkbox" onclick="enableShow50(<%# Eval(chkRaces_1.ClientID) %>);" name="ctl00$MainContent$chkRaces_1">

我使用id ='chkRaces_1'引用的Javascript失败了。我想用标签n替换所有输入,但是我得到错误。“type HtmlInputCheckBox”与“ListItem”不兼容。所以我也要改变我不想要的课程。

我还能做些什么来实现同样的目标,而aspx的变化很小。

2 个答案:

答案 0 :(得分:5)

您可以使用ClientIDMode,但请记住,这仅适用于.NET 4.0及更高版本。

<asp:Label ID="SelectedSport" runat="server" ClientIDMode="Static">
</asp:Label>

或者在JavaScript中:

var userLabel = document.getElementById('<%=SelectedSport.ClientID%>');

如果你试图在javascript中访问控件,那么使用.ClientID可能是你最好的选择,因为它不需要在aspx页面中进行更改

答案 1 :(得分:2)

要将Container的ID附加到控件的id,请设置控件的ClientIDMode =“Static”属性。

<input id='chkRaces_1' type='checkbox' ClientIDMode="Static" runat='server' onclick="enableShow50();" /><