Автоматическое внедрение шаблонного HTML в раздел бритвы на основе папки просмотра - PullRequest
0 голосов
/ 23 февраля 2011

Скажите, у меня есть несколько представлений в нескольких папках.

И есть меню, в котором будут разные вещи в зависимости от папки просмотра.

Есть ли способ шаблонизировать меню в файле (в @section или что-то в этом роде) и автоматически вводить его в основной шаблон? (вероятно /views/shared/_layout.cshtml).

т.е. что-то вроде

/ вид / Foo / menu.cshtml

@section menu
{
   <li>item1</li>
   <li>item2</li>
}

/ вид / бар / menu.cshtml

@section menu
{
    <li>item1</li>
    <li>item2</li>
    <li>item3</li>  
}

/ вид / общий / _Layout.cshtml

<blah blah blah>
<ul>
@if(IsSectionDefined("Menu"))
{
    @RenderSection("Menu");
}
</ul>
@RenderBody()
</blah blah blah>

Так что если localhost / foo / * называется foo /, то меню будет введено. Если localhost / bar / * вызывается bar, меню будет вставлено в _Layout и т. Д. И т. П.

Я думаю, что 2 возможные точки внедрения находятся в _ViewStart.cshtml или переопределяют базовый класс веб-страниц, но остается вопрос, как добавить раздел?

Благодаря SLaks это добавлено в _Layout.cshtml:

@{
    var controller = Request.RequestContext.RouteData.GetRequiredString("controller");
    if (File.Exists(HttpRuntime.AppDomainAppPath + @"\views\" + controller + @"\menu.cshtml"))
    { 
        @Html.Partial("~/views/" + controller + "/menu.cshtml");
    }
}

1 Ответ

1 голос
/ 23 февраля 2011

Как это:

@Html.Partial("~/Views/" + name + "/menu.cshtml")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...