1

我有使用重复代码的 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 来达到同样的效果。

4

2 回答 2

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 页面

于 2012-05-08T17:34:23.440 回答
2

要不将容器的 ID 附加到控件的 ID,请设置控件的 ClientIDMode="Static" 属性。

<input id='chkRaces_1' type='checkbox' ClientIDMode="Static" runat='server' onclick="enableShow50();" /><    
于 2012-05-08T17:33:57.633 回答