我有一个非常基本的ASP.NET MVC网站,我无法弄清楚为什么我的标题内容会被渲染两次。
<!-- ViewStart -->
@{
Layout = "~/Views/Shared/_Layout.cshtml";
}
<!-- _Layout.cshtml -->
<body>
<div class="container body-content">
@RenderPage("~/Views/Shared/_Header.cshtml")
@RenderBody()
</div>
<body>
<!-- _Header.cshtml -->
@{
Layout = null;
}
<h1> Header Content</h1>
<!-- View-->
<h2>
<div class="well">
Body Content
</div>
</h2>
我最终得到的是标题内容呈现两次;一次在视图上方,一次在视图中。
呈现来源:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title> - My ASP.NET Application</title>
<link href="/Content/bootstrap.css" rel="stylesheet"/>
<script src="/Scripts/modernizr-2.6.2.js"></script>
<script type="text/javascript">
window.apiUrl = '';
</script>
</head>
<body>
<div class="container body-content">
<h1> Header Content</h1>
<div class="document-root" ng-app="AppHome">
<div ng-view></div>
</div>
</div>
<script src="/Scripts/Vendor/Bootstrap/bootstrap-without-jquery.js"></script>
<script src="/Scripts/respond.js"></script>
</body>
</html>
任何想法为什么!?
注1:在浏览导航时,我期待的是:
注意2:从源头可以看出,这是一个Angular App。我已经替换了将使用上面显示的内容呈现的视图 - 这导致上面的图片。但渲染的源不包括第二个H1,所以这意味着第二个H1以某种方式来自角度注入视图
注意3:在真正的问题中,我试图显示一个菜单并显示两次。作为一项完整性检查,我将所有内容剥离到最低限度,如上所示;但仍然没有骰子。
答案 0 :(得分:1)
在_Layout.cshtml中添加
@ { Layout = null; }
也许您的Viewstart页面已经提到了适用于每个页面的布局。
注意:页面中包含的视图必须将Layout设置为null,否则将显示Viewstart中提到的布局
答案 1 :(得分:0)
您似乎两次渲染<h1> Header Content</h1>
。
@RenderPage("~/Views/Shared/_Header.cshtml")
这可能还有<h1> Header Content</h1>
代码。
例如
<!-- _Layout.cshtml -->
<body>
<div class="container body-content">
<h1> Header Content</h1>
</div>
<body>
<!-- _Header.cshtml -->
<h1> Header Content</h1>
<!-- View-->
<h2>
<div class="well">
Body Content
</div>
</h2>