2017-01-19 49 views
0

我最近將網站從一臺服務器遷移到另一臺服務器。這些網站已經在IIS上正確設置並且能夠連接。但是,我正面臨着asp.net控件的.net添加的前綴問題。 asp.net控件(如文本框)會自動爲控件的名稱加上ct100_前綴。這是工作正常,因爲我引用JavaScript中的ct100_nameofthecontrol。但現在的前綴已更改爲CT100的$代替ct100_

例如

我有名字頁面上txtSearchName一個asp.net控制文本框。當頁面獲取呈現的文本框的名字從txtSearchName改爲ctl00_bodyContent_txtSearchName但經過遷移,相同的名稱被更改爲ctl00 $ $的BodyContent txtSearchName

new server naming

有沒有辦法或者改變_以$配置或我要改變JavaScript代碼的引用?

enter image description here

請幫助

感謝

更新的解決方案:

的代碼應有的ClientIDMode設置爲靜態的控制。但是,應用程序已經由開發人員構建,並且在更改服務器時引發了此錯誤。如果需要更改代碼並且可能輕易破壞代碼,那麼執行這項任務非常麻煩。 _和$符號依賴於CLR版本。我在IIS管理器上的應用程序池中將CLR版本從V4.0更改爲V2.0,並且一切都恢復正常。

+1

你可以用你的控件嘗試'ClientIDMode =「Static」'。這將保證任何名字與你會給它的ID不會改變它。 –

+1

您應該從ASP.NET獲取客戶端ID,而不要依賴任何其他行爲。這樣它會一直工作。現在一切都很容易就會因爲結構上的一點變化而中斷。或者使用像Afnan這樣的靜態名稱。 –

回答

1

您不應該在JavaScript中對ID進行硬編碼。你確實可以使用ClientIDMode="Static",但不建議這樣做,因爲它可能會導致重複的ID。更好地使用ClientID

$("#<%= txtSearchName.ClientID %>").val(''); 
$("#<%= txtSearchName.ClientID %>").focus();