在Razor Helper中使用@section

Rya*_*n B 5 c# html-helper razor asp.net-mvc-4

我们正在尝试将布局的部分设置为“必需”,但可根据各个页面进行配置。目前,我们使用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>
}
Run Code Online (Sandbox Code Playgroud)

这要求您在每个新页面中都设置此块,但我想通过一些默认值和使用部分视图进行配置的选项来使此过程更容易。我希望设置像这样的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)
    }
}
Run Code Online (Sandbox Code Playgroud)

因此要实现的语法类似于

@Layout.FloatingNav(@Model.Name, @Model.AverageRating)
Run Code Online (Sandbox Code Playgroud)

要么

@Layout.FloatingNav("_SimpleNav", @Model)
Run Code Online (Sandbox Code Playgroud)

但是,问题在于,剃刀助手似乎不了解该节的语法。有没有办法在Razor Helpers中包含部分?

Row*_*man 4

我认为这是不可能的。

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

A HelperResult(助手)不知道如何定义节。

DefineSection方法属于WebPageBase.

你可能必须从不同的方向来看待这个问题。使用部分视图而不是助手可能会解决这个问题。