布局页面和视图冲突MVC5

时间:2018-10-31 09:05:00

标签: html asp.net asp.net-mvc asp.net-mvc-5

因此,我刚刚首次发布了一个网站,但遇到了一个问题。看起来_Layout.cshtml页面和视图相互冲突,因为它不会加载所有CSS和JS。我在控制台标签中看到一些错误:

” HTML1503:意外的开始标记, HTML1512:不匹配的结束标记, HTML1506:意外令牌。                            “

当我转到发生错误的页面的源时,布局和视图页面被组合在一起,它在几秒钟的头部标记处给出了错误。第一个头标签来自布局页面,第二个头标签来自视图页面。因此,在一页中有2个head标签,这会产生冲突。

在发布之前我有什么想念的吗?因为在localhost上它运行正常,没有这些冲突。

希望有人可以帮助我,在此先感谢! :)

1 个答案:

答案 0 :(得分:1)

我建议您使用Razor在布局页面上通读此MSDN article

听起来您正在重复标题信息。

文章中

  

许多网站的内容都显示在每个页面上,例如   页眉和页脚,或一个告诉用户已登录的框。   ASP.NET允许您创建带有内容块的单独文件,该内容块可以   包含文本,标记和代码,就像常规网页一样。您可以   然后将内容块插入您所在网站的其他页面中   希望信息出现。这样,您就不必复制和   将相同的内容粘贴到每个页面中。

换句话说,布局页面具有要在每个页面上重复的所有标记。这样,您不必手动重复。

  

一个内容页面可以包含多个部分,如果需要,这很有用   使用具有多个可替换内容区域的布局。在   在内容页面上,为每个部分指定一个唯一的名称。 (默认   部分未命名。)在布局页面中,添加一个RenderBody   指定未命名(默认)部分应在何处出现的方法。   然后,您添加单独的RenderSection方法以呈现命名的   各个部分。

由于每个页面可能都有多个部分,因此可以使用RenderSection方法在布局中区分它们。

这是文章中的一个示例:

<!DOCTYPE html>
<html>
  <head>
    <title>Multisection Content</title>
    <link href="~/Styles/Site.css" rel="stylesheet" type="text/css" />
  </head>
  <body>
    <div id="header">
      <div>This content will repeat on every view that uses this layout.</div>
      @RenderSection("header", required: false)
    </div>
    <div id="main">
      @RenderBody()
    </div>
  </body>
</html>

如您所见,任何标头信息都将使用RenderSection方法加载。在您看来,您可以使用类似于以下代码的方式来定义该部分:

@section header {
  <div>
    This content will only repeat on the page that it is declared in.
  </div>
}

因此,当您运行它时,您将获得:

<!DOCTYPE html>
<html>
  <head>
    <title>Multisection Content</title>
    <link href="~/Styles/Site.css" rel="stylesheet" type="text/css" />
  </head>
  <body>
    <div id="header">
      <div>This content will repeat on every view that uses this layout.</div>
      <div>
         This content will only repeat on the page that it is declared in.
      </div>
    </div>
    <div id="main">
      ...
    </div>
  </body>
</html>

required:false的{​​{1}}部分意味着您不必在每个使用布局的视图中都包括“标题”部分。它是可选的。如果没有要求将其设置为false,则需要在使用该布局的每个页面上对其进行声明。

另一方面,请确保仅在以下位置之一声明您的css和javascript,如果要重复的话,最好是布局页面。但是,这并不意味着您不能同时拥有css和javascript。例如,如果您在项目中使用引导程序,则应将其包含在布局页面中,这样您就不会在整个视图中重复进行包含。但是,例如,您可以在视图中仅包含视图专用的javascript文件,而在布局中不包含该文件。