ASP.Net 4中ClientIDMode的正确设置是什么,以获得ASP.Net 2.0渲染.

Pil*_*Bob 8 asp.net clientid asp.net-4.0

我们刚刚将我们的应用程序从ASP.Net 2.0更新到ASP.Net 4.0.

我们已经包含在<system.web>元素中的web.config中:

<pages controlRenderingCompatibilityVersion="3.5" clientIDMode="AutoID" />
Run Code Online (Sandbox Code Playgroud)

我的理解是,这应该使控件与.Net 2.0/3.5相同.

但是......它不是......这是一个例子

这是在2.0中呈现的:

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

这是在4.0:

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

区别:

2.0 id=grdUserEntity__ctl1_chkSelectAll
4.0 id=grdUserEntity_ctl01_chkSelectAll
Run Code Online (Sandbox Code Playgroud)

根据我读到的,配置设置将导致ASP.Net 4.0呈现服务器控件和客户端ID与先前版本相同.

我们做错了什么?

Inf*_*oop 12

从ASP.NET 2.0到ASP.NET 3.5的ID呈现方式发生了变化.因为你从2.0到4.0,你仍然看到了这种差异.这一变化是由于XHTML合规性的改进.

您可以尝试使用xhtmlCompliance compat设置切换回2.0渲染.另一个compat设置,是:)它应该工作,但老实说,我不确定如何测试旧的compat设置是在4.0,我知道它将与UpdatePanel不兼容,如果你打算使用那.

您有理由保留2.0渲染吗?只是害怕回归,或者你有任何已知的实际回归?

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

  • 我们有基于2.0渲染方式的javascript.所以,是的,我们现在有几个回归问题. (2认同)