将 .net 项目转换为使用布局后页面顶部的白色 space

White space at top of page after converting .net project to use layouts

我最近更改了我的 .net 项目以使用母版页/布局页。现在,当我的所有页面都呈现时,页面顶部的导航栏之前有一些 space。

我在 chrome 中检查了那个页面,正文顶部有一些空引号,在检查器中删除那些可以解决问题。但我无法理解它们来自哪里?这是我的索引的页面结构。

@{
  Layout = "~/Views/Shared/_Layout.cshtml";
  ViewBag.Title = "my title";
}
<!--HERO IMAGE-->
<div>
    //index page's code comes here
</div>

@section additionalStyles{
   //adding external stylesheets
}

我在我的索引页面中使用呈现部分来加载一些在其余页面中没有用的样式表。这些在布局页面的结束标记之前加载,如下所示:

<!DOCTYPE html>
<html lang="en" class="no-js">
<head>
  <meta charset="utf-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">

  <title>@ViewBag.Title</title>

  <!-- All STYLESHEETS ARE ADDED AT THIS PLACE-->

  @RenderSection("additionalStyles", required: false);
</head>
<body>
  <div class="navbar">
       //navbar's code  comes here
  </div>

    @RenderBody();

  <!-- FOOTER -->

  @RenderSection("additionalScripts", required: false);

  <!-- ALL SCRIPTS ARE ADDED HERE-->
</body>
</html>

引号可能是什么原因造成的?

P.s:我刚刚注意到我的许多页面都得到了那个间距和引号,所以它们可能来自布局文件,或者可能是这些部分导致了问题,但我没有完全知道怎么解决

编辑: 第二个页面实际上定义了布局页面要呈现的两个部分,实际上得到了其中三个“"quotes"” .

这是某种模式吗?

您的布局中似乎有一个杂散的分号 (;)。我会检查布局页面是否有任何杂散或重复的分号(例如,它们可能被错误地重复了;;)。同时检查 _ViewStart.cshtml 文件。

如果你仔细看,它正在插入分号 ;

@RenderSection("additionalStyles", required: false);

@RenderBody();

您的代码在 @RenderSection 之后有不必要的分号,并且正在生成它们以供显示。删除它们,"space" 就会消失。

有关分号的用法,请参阅 https://docs.microsoft.com/en-us/aspnet/web-pages/overview/getting-started/introducing-razor-syntax-c 的第 3 节。

  1. Inside a block, you end each code statement with a semicolon

    Inside a code block, each complete code statement must end with a semicolon. Inline expressions don't end with a semicolon.

<!-- Single-statement block -->
@{ var theMonth = DateTime.Now.Month; }

<!-- Multi-statement block -->
@{
    var outsideTemp = 79;
    var weatherMessage = "Hello, it is " + outsideTemp + " degrees.";
}

<!-- Inline expression, so no semicolon -->
<p>Today's weather: @weatherMessage</p>

我认为问题出在 @RenderSection@RenderBody 末尾的分号上。那些不参加半决赛的人:

@RenderSection("additionalStyles", required: false)
@RenderBody()