Asp.net

ASP.Net 4 中 ClientIDMode 的正確設置是什麼以獲得 ASP.Net 2.0 渲染。

  • July 25, 2014

我們剛剛將我們的應用程序從 ASP.Net 2.0 更新到了 ASP.Net 4.0。

我們已經在 web.config 中包含了<system.web>元素:

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

我的理解是,這應該使控制項與 .Net 2.0/3.5 相同。

然而……它不是……這是一個例子

這是在 2.0 中呈現的:

<input id="grdUserEntity__ctl1_chkSelectAll" type="checkbox"
  name="grdUserEntity:_ctl1:chkSelectAll" onclick="javascript:iSelectAll();" />

這是在 4.0 中:

<input id="grdUserEntity_ctl01_chkSelectAll" type="checkbox" 
  name="grdUserEntity$ctl01$chkSelectAll" onclick="javascript:iSelectAll();" />

區別:

2.0 id=grdUserEntity__ctl1_chkSelectAll
4.0 id=grdUserEntity_ctl01_chkSelectAll

根據我讀到的配置設置將導致 ASP.Net 4.0 呈現伺服器控制項和客戶端 ID 與以前的版本相同。

我們做錯了什麼?

從 ASP.NET 2.0 到 ASP.NET 3.5,ID 的呈現方式發生了變化。由於您要從 2.0 升級到 4.0,您仍然會看到這種差異。更改是由於 XHTML 合規性改進。

您可以嘗試使用 xhtmlCompliance 兼容設置切換回 2.0 渲染。還有另一個兼容設置,是的:) 它應該可以工作,但老實說,我不確定舊的兼容設置在 4.0 中的測試效果如何,而且我知道如果你打算使用它不會與 UpdatePanel 兼容那。

您是否有理由要保留 2.0 渲染?只是害怕回歸,還是你有任何已知的實際回歸?

XHTML 設置:http: //msdn.microsoft.com/en-us/library/ms178159.aspx

引用自:https://stackoverflow.com/questions/3008015