ASP.Net 网络表单 - 页面 clientIdMode
ASP.Net Webforms - pages clientIdMode
我正在将遗留 ASP.Net 网站(Web 窗体)从 .NET 3.5 升级到 .NET 4.5。我最近注意到升级后一些 ASP.Net 控件在 HTML 中从 ctl00_Content_dropDown1
重命名为 ctl00$Content$dropDown1
,打破了很多客户端 JavaScript .
如何在升级后阻止此更改发生?
docs.Microsoft.com 表示从 .NET 3.5 迁移到 .NET 4.0(或更高版本)会导致此重大更改,从而改变元素的 id
属性的生成方式。
在 web.config 文件中,更改 <pages>
元素,向其添加 clientIDMode
属性,如下所示:
<pages clientIDMode="AutoID" ...
这应该会像以前一样继续制作 ID。
除了 AutoID
之外,MSDN 列出了其他几个有用的选项:
- AutoID - 自动生成带有下划线字符的段
- Inherit - 从父容器继承模式
- 可预测 - .NET 4.0 及更高版本中页面的默认值
- 静态 - ClientID 设置为 ID 属性
的值
当您从 .NET 3.5 升级到 .NET 4.5 时,Visual Studio 应该将 ClientIDMode
设置为 AutoID
,但是当您不升级时我认为它不起作用有一个 ASP.Net Web 项目 (.csproj),而你拥有的只是一个 ASP.NET 网站。
我正在将遗留 ASP.Net 网站(Web 窗体)从 .NET 3.5 升级到 .NET 4.5。我最近注意到升级后一些 ASP.Net 控件在 HTML 中从 ctl00_Content_dropDown1
重命名为 ctl00$Content$dropDown1
,打破了很多客户端 JavaScript .
如何在升级后阻止此更改发生?
docs.Microsoft.com 表示从 .NET 3.5 迁移到 .NET 4.0(或更高版本)会导致此重大更改,从而改变元素的 id
属性的生成方式。
在 web.config 文件中,更改 <pages>
元素,向其添加 clientIDMode
属性,如下所示:
<pages clientIDMode="AutoID" ...
这应该会像以前一样继续制作 ID。
除了 AutoID
之外,MSDN 列出了其他几个有用的选项:
- AutoID - 自动生成带有下划线字符的段
- Inherit - 从父容器继承模式
- 可预测 - .NET 4.0 及更高版本中页面的默认值
- 静态 - ClientID 设置为 ID 属性 的值
Visual Studio 应该将 ClientIDMode
设置为 AutoID
,但是当您不升级时我认为它不起作用有一个 ASP.Net Web 项目 (.csproj),而你拥有的只是一个 ASP.NET 网站。