2011-03-22 64 views

回答

2

什麼ASP.NET一般不會是你的前綴控件的ID與一個字符串,它用於確定您的實際控件駐留在ASP.NET控件樹中的哪個位置。

考慮到這一點,我通常所做的就是使用jQuery的'ends with'選擇器在運行時獲取完整的ASP.NET解析ID。

喜歡的東西:

// get a handle on your original control 
var myControl = $('[id$="<myOriginalId>"]'); 
// and then access it's properties 
var myRuntimeId = myControl.eq(0).attr('id'); 

你可以很可能想像,這不會削減它,當你有用戶控件與形式的不同的地方使用相同的ID。我只是在這裏和那裏進行一些調整(可能使用.eq()函數)以適合我的業務需求。

+0

謝謝,這完全符合我的情況,只需稍加修改:) – mehul9595 2011-03-22 10:30:59

2

你可以把在用戶控件類,然後用類似$( 「myUC 」)。ATTR(「 ID」)

+0

我也這樣做,當我必須。然而,我覺得我應該注意,元素類在語義上被設計用於DOM中的多個元素,所以像這樣的東西一般可以返回多個元素。那麼,無論是或者你使用類名作爲ID。 – 2011-03-22 09:33:01

+0

我同意此路線需要應用一定程度的控制權。 – RubbleFord 2011-03-22 09:34:26

0

這可能有助於您從不同的角度來看待它: 在.Net中,您可以使用myControl.ClientID獲取生成的ID。

如果你把它放在一個javascript變量中 - 我知道它並不整齊 - 你可以很容易地獲取它。

<!--mypage.aspx--> 
<script> 
    var myIdVar = "<%=myControl.ClientID%>"; 
    if(myIdVar == "foo") 
    { 
    alert("bar"); 
    } 
</script>