在Razor Helper里面使用@section

我们正在尝试将布局的各个部分设置为必需,但可以根据各个页面进行配置。 目前我们用一节来做这件事。

@section FloatingNav { 

@Model.Name @Model.AverageRating

}

这需要您在每个新页面中设置此块,但我希望使用部分默认值和选项来使用部分视图进行配置,从而简化此过程。 我希望设置一个像这样的Razor助手。

 @using System.Web.Mvc.Html @helper FloatingNav(string name, int rating) { @section FloatingNav { 

name rating

} } @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中包含部分?

我不认为这是可能的。

@helper@section语法是编译页面的特殊指令。

HelperResult (帮助程序)不知道如何定义节。

DefineSection方法属于WebPageBase

你可能不得不从不同的方向来到这里。 使用部分视图而不是帮助程序可能会解决此问题。