我試圖找到應對的是ASP.NET前添加一個值,與runat="server"
創建的任何元素的方式,最好的方式, <%= id.ClientID %>
。我今天早些時候有以下解決方案來了,但我敢肯定,有更優雅的解決方案:什麼是對付ASP.NET的客戶端ID的最佳方式,而不必訴諸使用
$(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" />
...這使它有點klunky(或增加了現有的klunkiness因素)。
我的最終目標是讓我不再需要使用<%= id.ClientID %>
(或任何需要服務器端代碼的東西),這樣我的所有JS都可以被調用爲包含,而不必將其嵌入到我的ASPX中頁面。哦,我的第二個終極目標是它儘可能簡單,並且不需要從項目到項目的大量設置時間。
我創建了一個的jsfiddle用一個例子http://jsfiddle.net/Realto619/8ZZYt/2/
因爲我不是控制意識到這是一個選擇。這聽起來像是符合我的標準。我會給你一個機會,看看它是如何運作的。謝謝! – Realto619
這是「不好的做法」,我就舉一個例子,爲什麼是壞的,假設你有3個控制器,id爲'supposeToBeUniqe' 格elment,現在你加載所有3個控制器在aspx頁面>有3個ID在頁面上具有相同的名稱! –