我有使用重复代码的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的变化很小。
答案 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();" /><