2011-11-08 116 views
1

我們正試圖將我們的網站從框架3.5升級到4.0。一切似乎都是好的服務器端 - 目前我唯一的問題是少數自定義控件的ID。ASP.Net 3.5客戶端ID與4.0不同

的控制減速的樣子:

<div runat="server" id="gglSelectedItemsImage" class="gplSelectedItemsText">None selected</div> 

當在3.5渲染控制樣子:

<div id="gplCategories_gglSelectedItemsImage" class="gplSelectedItemsText">Some Content</div> 

而且在4.0一樣:

<div id="ctl00_ctl00_ctl00_ContentPlaceHolder1_Content_gplCategories_gglSelectedItemsImage" class="gplSelectedItemsText">Some Content</div> 

這是造成一些我們較舊的JavaScript/JQuery失敗。

我在web.config中設置了<pages clientIDMode="AutoID" controlRenderingCompatibilityVersion="3.5" />,所以99.9%的ID是正確的。最奇怪的是3.5控件看起來像使用clientIDMode="Predictable"而不是標準的3.5自動ID進行渲染?

而且,如果我在4.0訪問控制clientID的服務器端看來正確:

Me.gglSelectedItemsImage.ClientID = "gplCategories_gglSelectedItemsImage" 

這是主要的問題,插入JavaScript的ECT任何值實際上都是錯誤的價值觀。

不幸的是,我們的網站很大,只是修復這一個錯誤,所以我需要弄清楚爲什麼控件不同地呈現它的ID並在整個網站上實現它。

任何想法你們都會非常感激。

+3

爲什麼您的舊的JavaScript/jQuery的依賴於硬編碼的客戶端ID呢? – LukeH

+0

我同意LukeH。 ClientID屬性存在,因此您不必親自手工製作它們,無論框架版本如何。 –

+0

這是我以前的時間,所以我不知道。在這個例子中,我們有一個通用控件,除了另一個控件的clientID(「gglSelectedItemsImage」),然後使用Jquery來更新它的值。當實際呈現的文檔是「ctl00_ctl00_ctl00_ContentPlaceHolder1_Content_gplCategories_gglSelectedItemsImage」class =「gplSelectedItemsText」 – pingoo

回答

0

你應該訪問的客戶端id的像這樣在你的.aspx文件:

<%=gglSelectedItemsImage.ClientID%> 
+0

這是服務器ClientID與實際控件不同的問題。 – pingoo

+0

這聽起來很奇怪。這幾乎就像該網站認爲它以自動運行方式運行,但該頁面在內部運行可預測。您可以嘗試通過SaveStateComplete事件在JavaScript中注入客戶端ID。我看不出客戶端ID在那個時候會有什麼問題。 – Graymatter

+0

如何通過'js'文件訪問它?你的代碼塊在那裏不起作用...所以你的回答失敗了(在4.0中,你可以將你的clientidode設置爲靜態,這很好,但是在3.5中它是一個總BS) – HellBaby

1

試試這個

<pages controlRenderingCompatibilityVersion="3.5" clientIDMode="AutoID"/> 
+0

感謝法赫德,但我已經得到了controlRenderingCompatibilityVersion =「 3.5「(我會更新我的問題以包含它) – pingoo

+0

你有多個web.config文件嗎? – Fahad

+0

我們對當前的構建配置有不同的深化(調試/ Live ect),但就是這樣。看過它沒有任何東西會覆蓋正常的標籤,但是我確實嘗試了,但它沒有幫助(有點高興 - 本來就是大量的facepalm時刻)。 – pingoo

1

在第二個例子中,你正在使用一個母版頁,這解釋了爲什麼ClientID是不同的。它不應該有所作爲但如果你被ClientID引用控制:

var ctrl = $("#<%=gglSelectedItemsImage.ClientID%>"); 
+0

這兩個例子都來自同一個網站,其中一個在4.0中是3.5。那麼,任何主頁面的影響都應該影響我的假設? – pingoo