去年,我們將所有新功能移至ASP.NET MVC。ASP.NET 4 webforms clientid後綴爲`_0`
但是,我們仍然有一大堆遺留的WebForms頁面有很多JavaScript代碼,我們不會很快有機會升級它們。
最近我們也轉移到ASP.NET 4,這似乎已經打破了這些遺留頁面上JavaScript代碼的負載。
凡在客戶端ID是:
ctl001_masterControlName_panelControlName_controlWeWant
現在他們已經成爲:
ctl001_masterControlName_panelControlName_controlWeWant_0
在這情況下_0
後綴從何而來? panelControlName
中只有一個controlWeWant
,所以後綴不會添加任何值。
我知道硬編碼的客戶端ID是WebForms的一個壞主意;我們轉移到ASP.NET MVC的原因之一是WebForms生成的糟糕的HTML。但是,對於這些遺留代碼,我們堅持使用它,並且我寧願不去改變它(直到有一天我們有足夠的空閒時間才能正確完成它)。
爲什麼ASP.NET 4根本不添加_0
後綴?
我可以關閉它嗎?
有沒有其他方法可以避免它?
這真是太好了 - 看起來未來的WebForms程序員將能夠使它產生稍微低一點的HTML(那些尚未運行MVC山丘的HTML)。不幸的是,它並沒有回答我的問題:爲什麼它將'_0'添加到客戶端ID,以及如何在不重寫所有內容的情況下將其刪除? – Keith 2010-10-26 11:45:46
試試這個:http://forums.asp.net/p/1305766/2558955.aspx :) – Onkelborg 2010-10-26 11:48:25
謝謝,但它描述了一個類似的問題與不同的原因 - 他們重複ID,所以後綴被自動生成(在Asp.Net 2的外觀也是如此)。我有一個在Asp.Net 2中工作的頁面,但是在4中,相同的代碼(重新編譯)現在在客戶端ID後面加了'_0',我希望它像以前那樣運行。 – Keith 2010-10-26 11:54:15