我们正在尝试将布局的各个部分设置为必需,但可以根据各个页面进行配置。目前我们使用Section进行此操作。
@section FloatingNav {
<h1>@Model.Name <span class="release-year">@Model.AverageRating</span></h1>
<ul class="sub-nav">
<li class="active"><a href="#episodes">Episodes</a></li>
<li><a href="#episodes">Cast</a></li>
<li>Reviews</li>
<li>Related</li>
</ul>
}
这要求您在每个新页面中设置此块,但我希望使用部分默认值和选项来更轻松地使用部分视图进行配置。我本来希望设置一个像这样的Razor助手。
@using System.Web.Mvc.Html
@helper FloatingNav(string name, int rating) {
@section FloatingNav {
<h1>
name <span class="release-year">rating</span></h1>
<ul class="sub-nav">
<li class="active"><a href="#episodes">Episodes</a></li>
<li><a href="#episodes">Cast</a></li>
<li>Reviews</li>
<li>Related</li>
</ul>
}
}
@helper FloatingNav(System.Web.Mvc.HtmlHelper html, string viewName) {
@section FloatingNav {
@html.Partial(viewName)
}
}
@helper FloatingNav(System.Web.Mvc.HtmlHelper html, string viewName, object model) {
@section FloatingNav {
@html.Partial(viewName, model)
}
}
因此实现的语法类似于
@Layout.FloatingNav(@Model.Name, @Model.AverageRating)
或
@Layout.FloatingNav("_SimpleNav", @Model)
问题是,似乎Razor Helpers不理解部分语法。有没有办法在Razor Helpers中包含部分?
答案 0 :(得分:4)
我认为这是不可能的。
@helper
和@section
语法是编译页面的特殊指令。
HelperResult
(帮助者)不知道如何定义部分。
DefineSection方法属于WebPageBase
。
你可能必须从不同的方向来看待这个问题。使用部分视图而不是助手可能会解决这个问题。