组合页面中的节定义

时间:2011-06-23 23:19:27

标签: asp.net-mvc-3 razor

我有一个页面:

@Html.Action("Index", "Product")
@Html.Action("Index", "Vendor")

这两个包含:

@section Head {
...
}

和(当然),我的布局文件包含:

<head>
...
@RenderSection("Head", required:false)
</head>

这个想法是每个有头脑的东西(比如javascript include,css等)都可以通过这个部分来实现。问题是每个页面只允许一个定义。这通常如何处理?

2 个答案:

答案 0 :(得分:0)

我不建议在RenderAction的结果中使用Section,因为它通常用于View Pages而不是partials。

最好在您的托管布局页面中包含以下内容:

@section Head {
  @Html.Action("foo")
  @Html.Action("bar")
}

答案 1 :(得分:0)

我找不到一个很好的方法来做到这一点,所以我改为向我的基础ViewModel添加属性,这些属性将保存<head>中需要的信息,然后有一个RenderPartial(“Head”) )在我的布局页面中。这样,事情的类型也会更加强烈,而不是只是将任何页面放入随机垃圾:

// Views/Shared/Head.cshtml
@model ViewModel
@foreach (var site in model.AuthorSites)
{
    <link rel="me" type="text/html" href="@site" />
}