最佳方法:MVC中的多个内容占位符

时间:2011-09-09 07:34:46

标签: asp.net asp.net-mvc vb.net asp.net-mvc-3 razor

我正在将ASP.Net Web表单项目转换为MVC3。母版页在不同位置包含多个内容占位符。

我用@RenderBody()替换了第一个内容占位符,但我对第二个内容占用方法感到困惑。

一种方法可能是分隔视图并为每个内容占位符方法放置@Html.RenderAction()。有没有更好的方法呢?

2 个答案:

答案 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如果存在于子页面上则呈现该部分,或者如果没有调用则不执行任何操作