【问题标题】:ASP.NET keep removing attribute from HEADASP.NET 不断从 HEAD 中删除属性
【发布时间】:2012-06-20 19:46:07
【问题描述】:

我的 asp.net 子母版页面设置如下:

<asp:Content ID="MainContent" runat="server" ContentPlaceHolderID="mainContent">
    <!doctype html public "-//w3c//dtd xhtml 1.0 strict//en" "http://www.w3.org/tr/xhtml1/dtd/xhtml1-strict.dtd">
    <html>
        <head >
            <title></title>
            <asp:ContentPlaceHolder ID="HeadContent" runat="server">
            </asp:ContentPlaceHolder>
        </head>
        <body>
            ...
        </body>
    </html>
</asp:Content>

为什么 ASP.NET 不断删除放在 HEAD 中的属性?具体来说,我试图让它像这样:

<head runat="server">

如果我在 HEAD 中没有 runat,我会收到以下错误:

Using themed css files requires a header control on the page. (e.g. <head runat="server" />). 

这是加载我上面的子母版页的主母版:

<%@ Master Language="C#" AutoEventWireup="true" CodeBehind="Site.Master.cs" Inherits="HeadOffice.Site" %>
<asp:contentplaceholder id="MainContent" runat="server">
</asp:contentplaceholder>

原来 asp:Content 正在从 html、head、body 中删除属性。不只是头。有没有办法阻止它?

【问题讨论】:

  • 是的,但是我的母版页有母版页,不要问我为什么。
  • 为什么你需要head标签到runat="server"
  • 对于主题,如果不是,它会给我这个错误:使用主题 css 文件需要页面上的标题控件。 (例如 )。
  • 能否请您显示另一个母版页?除非我能看到两个页面,否则很难理解发生了什么。
  • 另一个母版页只有一个内容占位符,可以从该母版页获取内容:

标签: asp.net visual-studio-2010


【解决方案1】:

我认为当你使用 runat=server 时,你需要给它一个 ID,这样服务器就会知道如何访问它

【讨论】:

  • 试过了。它会在保存时删除两个标签。
【解决方案2】:

您的主主页看起来像这样?

 <html xmlns="http://www.w3.org/1999/xhtml">
   <head runat="server">
     <title></title>
        <asp:ContentPlaceHolder ID="head" runat="server">
        </asp:ContentPlaceHolder>
   </head>
<body>
    <form id="form1" runat="server">
    <div>
       <asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server">

       </asp:ContentPlaceHolder>
    </div>
    </form>
</body>
</html>

如果不让您的主母版页看起来像我提供给您的这段代码。 在&lt;head&gt; 之间添加&lt;link rel="stylesheet" type="text/css" href="my.css"/&gt; 标签不在&lt;asp:ContentPlaceHolder ID="head" runat="server"/&gt; 为了避免删除这个。

另一个为什么你的 css 可以消失每个回发的选项是当你的 aspx 文件缺少 MasterPagefileAutoEventWireup 属性时的情况 示例:

  <%@ Page Title="" Language="C#" MasterPageFile="~/Page.Master" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="WebForm1" %>

编辑: 如果您的主要PageMaster 得到&lt;head&gt; 标记,则您不能像在代码中那样将另一个标记添加到同一页面,您应该只添加内容

&lt;asp:Content ID="content1" ContentPlaceHolderID="head" runat="server"/&gt; 放置在您的aspx 页面上。

如果有帮助请告诉我:)

【讨论】:

  • 没有。我的主页只是一个内容占位符。在加载到 contentplaceholder 的子母版页中的 html、head、body 等。而且我不能改变这个结构。
  • @Yongke 你在使用嵌套母版页吗?还是您自己创建了这个结构?
【解决方案3】:

好吧,我发现的解决方法是 asp:content 仅在您触发 onSave 事件时才修改您的 HTML。所以你要做的是进行编辑,然后不要保存,而是关闭 VS2010 程序,然后单击保存。这样,asp:content 将没有机会修改您的代码。之后您可以重新打开该项目。

【讨论】:

    猜你喜欢
    • 2010-12-01
    • 2020-08-30
    • 1970-01-01
    • 2014-03-23
    • 1970-01-01
    • 2018-02-03
    • 1970-01-01
    • 2015-01-25
    相关资源
    最近更新 更多