我們正試圖將我們的網站從框架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並在整個網站上實現它。
任何想法你們都會非常感激。
爲什麼您的舊的JavaScript/jQuery的依賴於硬編碼的客戶端ID呢? – LukeH
我同意LukeH。 ClientID屬性存在,因此您不必親自手工製作它們,無論框架版本如何。 –
這是我以前的時間,所以我不知道。在這個例子中,我們有一個通用控件,除了另一個控件的clientID(「gglSelectedItemsImage」),然後使用Jquery來更新它的值。當實際呈現的文檔是「ctl00_ctl00_ctl00_ContentPlaceHolder1_Content_gplCategories_gglSelectedItemsImage」class =「gplSelectedItemsText」 – pingoo