我们有一个现有的 ASP.Net Web 应用程序,我们希望使用母版页将其转换为该应用程序。
在执行此操作的过程中,我发现为 HTML 元素生成的 HTML id 以 ContentPlaceHolder 的 id 为前缀。这就是当我们设置 ContentPlaceHolder 的 clientidmode=static 时可以预期的结果。
现在,由于我们有很多使用 id 的现有客户端脚本,因此当我们使用母版页时,这部分会中断,并且运行所有 javascript 以确保我们使用 Control.ClientID 调用 javascript 是一项相当大的工作,因为其中很多都是硬编码的。
有没有办法禁用前缀?如果我创建每个控件设置其 ClientIdMode=static,我可以成功地做到这一点,但我还是更喜欢设置一次,以确保所有控件的 ClientIdMode=static。那可能吗?或者是否可以覆盖 ContentPlaceHolder 的 NamingContainer?
该平台是.Net 4.0
(按照下面的答案中所述在 web.config 中使用 ClientIdMode=static 解决上述问题后),我遇到了“name”属性是自动生成的问题,并且没有设置为我介绍之前的值母版页。这给我现有的服务器代码带来了问题,其中有很多 Request.Form[]。知道解决这个问题的最佳实践是什么吗?
谢谢
圣战
你可以有ClientIDMode
在页面级别:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" ClientIDMode="Static" %>
母版页级别:
<%@ Master Language="C#" AutoEventWireup="true" CodeFile="MasterPage.master.cs" Inherits="MasterPage" ClientIDMode="Static" %>
和Web.Config级别(使所有页面继承此行为):
<system.web>
<compilation debug="true" targetFramework="4.0"/>
<pages clientIDMode="Static"></pages>
</system.web>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)