我试图找到最好的方法来处理 ASP.NETrunat="server"
为使用<%= id.ClientID %>
. 我今天早些时候提出了以下解决方案,但我确信还有更优雅的解决方案:
$(document).ready(function() {
var dotNetPrefix = $("[id$='prepended_ID_value']").attr('id');
if (dotNetPrefix !== undefined) {
dotNetPrefix = dotNetPrefix.replace('prepended_ID_value', '');
dotNetPrefixID = '#' + dotNetPrefix;
console.log('dotNetPrefix = ' + dotNetPrefix);
testDotNet('prepended_ID_value');
} else {
console.log('Hidden Field is Missing! => <asp:HiddenField runat="server" ID="prepended_ID_value" Value="dotNet_ID_Prefix" />');
}
});
function testDotNet(getID) {
var test_dotNetPrefixID = $(dotNetPrefixID + getID).val();
console.log('$(\'' + dotNetPrefixID + getID + '\').val() = ' + test_dotNetPrefixID);
}
这种方法的一个问题是它要求我在每一页中放置以下隐藏字段:
<asp:HiddenField runat="server" ID="prepended_ID_value" Value="dotNet_ID_Prefix" />
......这使它有点笨拙(或增加了现有的笨拙因素)。
我的最终目标是让我不再需要使用<%= id.ClientID %>
(或任何需要服务器端代码的东西),以便我的所有 JS 都可以作为包含调用,而不必将其嵌入到我的 ASPX 页面中。哦,我的第二个最终目标是它尽可能简单,并且从一个项目到另一个项目不需要大量的设置时间。
我用一个例子创建了一个 JSFiddle http://jsfiddle.net/Realto619/8ZZYt/2/