runat="server"
を使用せずに、ASP.NET が で作成された要素に値を追加する方法に対処する最善の方法を見つけようとしています<%= 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);
}
この方法の問題点の 1 つは、すべてのページに次の隠しフィールドを配置する必要があること
<asp:HiddenField runat="server" ID="prepended_ID_value" Value="dotNet_ID_Prefix" />
です。
最終的な目標は<%= id.ClientID %>
、JS を ASPX ページに埋め込むのではなく、インクルードとして呼び出すことができるように (またはサーバー側のコードを必要とするものを) 使用する必要がないようにすることです。ああ、私の 2 番目の究極の目標は、プロジェクトをできるだけシンプルにし、プロジェクトごとに多くのセットアップ時間を必要としないことです。
http://jsfiddle.net/Realto619/8ZZYt/2/の例で JSFiddle を作成しました