游子吟

致力于.Net,致力于企业信息化工程!
Harvest = Hope + Struggle

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
我写了一个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

 

解决办法:

在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   模式时,不会注意到任何变化。   

如果将   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   模式才是有意义的。 

 

posted on 2011-06-02 10:15  巴山游子  阅读(557)  评论(0编辑  收藏  举报