为啥我的 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(例如 &lt;asp:ContentPlaceHolder /&gt;,而不是像 &lt;div id="container"&gt; 这样没有 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 类?

为啥我的 asp.net 网页上不显示数据?

为啥 Bootstrap 不允许我在 ASP.NET MVC 页面中的下拉菜单上设置边距?

asp.net 中切换页面时 为啥session会丢失