为啥我的 ASP.NET 页面会在 html 元素 ID 中添加前缀“ctl00_ctl00”并破坏设计?
Posted
技术标签:
【中文标题】为啥我的 ASP.NET 页面会在 html 元素 ID 中添加前缀“ctl00_ctl00”并破坏设计?【英文标题】:Why does my ASP.NET page add the prefix 'ctl00_ctl00' to html element IDs and break the design?为什么我的 ASP.NET 页面会在 html 元素 ID 中添加前缀“ctl00_ctl00”并破坏设计? 【发布时间】:2010-09-17 01:07:48 【问题描述】:我不明白。
母版页中 html 元素的 id 由相同的 id 更改,但带有前缀,这破坏了 css 设计。
在我的母版页中:
<div id="container" runat="server">
<asp:ContentPlaceHolder ...
...
以上代码渲染完毕
<div id="ctl00_ctloo_container">
...
而且 CSS 样式明显消失了。
我该如何阻止它?
谢谢!
【问题讨论】:
【参考方案1】:我不需要 runat="server" 标记并将其删除。不知道它为什么在那里......现在ID没有改变。谢谢
【讨论】:
【参考方案2】:你需要 runat="server" 标签吗?如果您没有对代码隐藏中的 div 元素做任何事情,请将其删除。
【讨论】:
【参考方案3】:WebForms 应该只重写服务器控件的 ID(例如 <asp:ContentPlaceHolder />
,而不是像 <div id="container">
这样没有 runat="server"
的普通 HTML 元素
您无法阻止框架重写服务器控件上的 ID。不过,您可以改用类名。
【讨论】:
非常感谢大家,在这种情况下我在div中添加了runat="server",抱歉我第一次没有提供它,这就是为什么ID被改变了!!跨度> 【参考方案4】:AFAIK 你不能这样做。由于控制树,这是默认行为。
如果你想使用 CSS 直接设置 CSS 类,不要依赖 ID,比如
<asp:Whatever runat="server" id="whatever" CssClass="whateverClass">
更新:Here 是一个类似的线程,但它对你的 CSS 问题没有帮助。
【讨论】:
以上是关于为啥我的 ASP.NET 页面会在 html 元素 ID 中添加前缀“ctl00_ctl00”并破坏设计?的主要内容,如果未能解决你的问题,请参考以下文章
为啥我的 asp.net 应用程序抛出 ThreadAbortException?
为啥我的 IIS7 应用程序池在从 ASP.NET 页面调用的 DLL 中出现异常后关闭?
如何使用 ASP.NET 更改 HTML 页面元素的 CSS 类?