我正在将ASP.Net Web表单项目转换为MVC3。母版页在不同位置包含多个内容占位符。
我用@RenderBody()
替换了第一个内容占位符,但我对第二个内容占用方法感到困惑。
一种方法可能是分隔视图并为每个内容占位符方法放置@Html.RenderAction()
。有没有更好的方法呢?
答案 0 :(得分:5)
Razor已经取代了sections
了解asp.net webforms ContentPlaceHolders。请查看this介绍链接。
答案 1 :(得分:5)
您可以使用部分。例如,要在layout.cshtml的head标记中有脚本部分,可以指定
<head>
<title>@ViewBag.Title</title>
<link href="@Url.Content("~/Content/Site.css")" rel="stylesheet" type="text/css" />
<script src="@Url.Content("~/Scripts/jquery-1.4.4.min.js")" type="text/javascript"></script>
@RenderSection("scripts", false);
</head>
在任何视图中,您现在可以添加脚本部分来注入脚本:
@section scripts{
<script src="@Url.Content("~/Scripts/myscript.js")" type="text/javascript"></script>
}
“false”param告诉MVC如果存在于子页面上则呈现该部分,或者如果没有调用则不执行任何操作