我写了一个aspx页面,放一个GridView,GridView中添加一个模板列,其中放入一个LinkButton,显示数据
现在的问题是
1)本地开发机器上
生成的该LinkButton的ID,Name分别是
ID: GridView1_ctl02 _lbtnSel
Name: GridView1$ctl02$ lbtnSel
2)部署服务器上
生成的该LinkButton的ID,Name分别是
ID: GridView1__ctl2 _lbtnSel
Name: GridView1$_ctl2 $lbtnSel
经过比较,本地机器上生成的ID和Name都正常,ClientID使用一个下划线_分隔,UniqueID用一个$分隔,其中 ctl02 表示GridView第二行
但服务器上生成的ID和Name就有点不对了,虽然ClientID还是用一个下划线_分隔,UniqueID用一个$分隔,但其中GridView第二行的表示方式有明显的不同,它是 _ctl2
服务器上将02改成了2,并且用下划线开头表示
这是为什么?这个问题导致了页面的部分JS代码不能正常运行了,因为连ID和Name的规则都发生了变化,一直找不到原因,请教大家,谢谢。
运行环境 .net 版本2.0.50727,Win2003
现在的问题是
1)本地开发机器上
生成的该LinkButton的ID,Name分别是
ID: GridView1_ctl02 _lbtnSel
Name: GridView1$ctl02$ lbtnSel
2)部署服务器上
生成的该LinkButton的ID,Name分别是
ID: GridView1__ctl2 _lbtnSel
Name: GridView1$_ctl2 $lbtnSel
经过比较,本地机器上生成的ID和Name都正常,ClientID使用一个下划线_分隔,UniqueID用一个$分隔,其中 ctl02 表示GridView第二行
但服务器上生成的ID和Name就有点不对了,虽然ClientID还是用一个下划线_分隔,UniqueID用一个$分隔,但其中GridView第二行的表示方式有明显的不同,它是 _ctl2
服务器上将02改成了2,并且用下划线开头表示
这是为什么?这个问题导致了页面的部分JS代码不能正常运行了,因为连ID和Name的规则都发生了变化,一直找不到原因,请教大家,谢谢。
运行环境 .net 版本2.0.50727,Win2003
解决办法:
在web.config 中,去掉 <xhtmlConformance mode= "legacy“/> 属性
详见页面http://www.microsoft.com/china/msdn/library/webservices/asp.net/ASPNETusStan.mspx
为了满足每个人的要求,Microsoft 创建了一个名为 xhtmlConformance 的新配置选项,您可以在 Web 站点的配置文件中设置该选项。新的配置选项使您能够指定 Web 页的 XHTML 一致性的级别。它的内容如下所示。
<configuration>
<system.web>
<xhtmlConformance
mode= "transitional " />
</system.web>
</configuration>
默认情况下,xhtmlConformance 设置为值 transitional。但是,还可以将该选项设置为值 strict 或 legacy。
如果将 xhtmlConformance 选项设置为 strict,那么标准的 ASP.NET 控件将不会再呈现某些属性。例如,ASP.NET <form> 控件将不再呈现 name 属性。除非 ASP.NET 页包含(不符合标准的)客户端脚本,否则从 transitional 模式切换到 strict 模式时,不会注意到任何变化。
为了满足每个人的要求,Microsoft 创建了一个名为 xhtmlConformance 的新配置选项,您可以在 Web 站点的配置文件中设置该选项。新的配置选项使您能够指定 Web 页的 XHTML 一致性的级别。它的内容如下所示。
<configuration>
<system.web>
<xhtmlConformance
mode= "transitional " />
</system.web>
</configuration>
默认情况下,xhtmlConformance 设置为值 transitional。但是,还可以将该选项设置为值 strict 或 legacy。
如果将 xhtmlConformance 选项设置为 strict,那么标准的 ASP.NET 控件将不会再呈现某些属性。例如,ASP.NET <form> 控件将不再呈现 name 属性。除非 ASP.NET 页包含(不符合标准的)客户端脚本,否则从 transitional 模式切换到 strict 模式时,不会注意到任何变化。
如果将 xhtmlConformance 选项设置为 legacy,那么对于某些元素和属性(但不是全部),ASP.NET 框架将恢复为 ASP.NET 1.1 呈现行为。在这种情况下,ASP.NET 框架将呈现不与任何 XHTML 标准兼容的内容,并且页将不再通过 XHTML 标准验证。例如,在 legacy 模式下,呈现 <br> 标记时不会呈现它需要的 XHTML 结束斜杠 ( <br /> )。只有在将现有 ASP.NET 1.1 应用程序迁移到 ASP.NET 2.0 的过程中遇到问题时,将 xhtmlConformance 设置为 legacy 模式才是有意义的。