据我所知,没有内置机制可以一次加载布局页面。如果您希望仅一次加载该布局,则可以使用客户端方法执行此操作,以便服务器更轻巧。这是步骤。创建 MVC 4 应用程序。
在您的 _Layout.cshtml 中添加一个 div 来保存您要加载的 html 页面。在我的例子中是“pageholder”
<div id="body">
<div id="pageholder">
@RenderSection("featured", required: false)
<section class="content-wrapper main-content clear-fix">
@RenderBody()
</section>
</div>
</div>
将此脚本添加到您的 _Layout.cshtml
@Scripts.Render("~/Scripts/common.js")
<script type="text/javascript">
$(document).ready(function() {
$('.pagelink').click(function() {
var settings = {
'url': $(this).attr('url'),
'type': 'GET',
'dataType':'html'
};
get_html(settings);
});
});
</script>
修改您的菜单链接
<nav>
<ul id="menu">
<li>@Html.ActionLink("Home", "Index", "Home")</li>
<li><a href="#" class="pagelink" url="/home/about">About</a></li>
<li> <a href="#" class="pagelink" url="/home/contact">Contact</a></li>
</ul>
</nav>
添加js文件并命名为common.js并放入此内容
function get_html(settings) {
settings.success = function(data) {
$('#pageholder').empty().html(data);
};
settings.error = function (xhr, ajaxOptions, thrownError) {
alert(xhr.statusText);
};
$.ajax(settings);
}
设置布局 = null;关于和联系人视图
@{
ViewBag.Title = "About";
Layout = null;
}
运行应用程序并测试“关于”和“联系人”页面