2012-09-27 27 views
2

我試圖找到應對的是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/

回答

2

爲什麼不直接使用ClientIDMode=Static?將其設置在Web.config中,以便您的客戶端ID將在整個站點中寫入。

+2

因爲我不是控制意識到這是一個選擇。這聽起來像是符合我的標準。我會給你一個機會,看看它是如何運作的。謝謝! – Realto619

+0

這是「不好的做法」,我就舉一個例子,爲什麼是壞的,假設你有3個控制器,id爲'supposeToBeUniqe' 格elment,現在你加載所有3個控制器在aspx頁面>有3個ID在頁面上具有相同的名稱! –

2

如果您正在使用框架4.0或更高,使用控制的ClientIDMode財產

您可以使用靜態的ClientIDModeEnumeration

ClientID的值設置爲值ID屬性。如果 控制是一個命名容器,控制被用作 層次命名容器,它包含任何控件的頂部。

+1

我以前用過'的ClientIDMode = Predictable',但仍需要更多的我的注意,不是我想要的。我顯然錯過了'ClientIDMode = Static'選項,它看起來非常適合我的需求。謝謝! – Realto619

1

您可以使用jQuery的選擇與結尾:

$('input[id$="myServerId"]')

但要記住,那種選擇的是不是直接與<%= id.ClientID %>的ID選擇慢了許多。

http://jsperf.com/id-vs-ends-with

+0

我實際上在我的「klunky」解決方案中使用了這種方法,但我認爲這會增加太多的開銷並使事情超出可接受的數量。 – Realto619

1

正確的答案是遵循

var txt1 = $('#<%= txt1.ClientID %>'); 
$(txt1).click(function() { 
    alert('hi'); 
}); 

她,我創建了JavaScript的一個新的變量,它的參考依據其呈現的客戶ID

相關問題