mvc3 встроить частичный вид в другой - PullRequest
6 голосов
/ 14 октября 2011

У меня есть частичное представление, которое состоит из div с benner, который я меняю раз в неделю.Этот баннер встраивается в 10 страниц с одинаковым макетом.

Дайте страницу типа Index.cshtml или AboutUs.cshtml, которые являются частичными представлениями и имеют laypout _Layout.cshtml. Мой вопрос:

Могу ли я вставить код в Index.cshtml или AboutUs.cshtml, который отображает Banner.cshtml?

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

внутри Index.cshtml или AboutUs.cshtml У меня есть @ Html.Renderbanner ("banner.cshtml");

Ответы [ 5 ]

6 голосов
/ 14 октября 2011

Да,

@{ Html.RenderPartial("_Banner"); }

В папке общего доступа добавьте частичное представление и назовите его _Banner.cshtml

1 голос
/ 14 октября 2011

Использовать @ Html.RenderPartial ("YourViewName");

1 голос
/ 14 октября 2011

Конечно, вы всегда можете:

@Html.Partial("Banner")

с любого или частичного просмотра. Это отразит частичное Banner.cshtml в том месте, где вы вызвали этого помощника.

0 голосов
/ 14 октября 2011

Вы можете создать RenderSection в layout.cshtml

 @if (IsSectionDefined("Sidebar"))
    { 
        <div id="page">
            <!-- end #content -->
            <div id="content">
                @RenderBody()
            </div>
            <div id="sidebar">
                @RenderSection("Sidebar", required: false)
            </div>
            <div style="clear: both;">
                &nbsp;</div>
        </div>
        <!-- end #page -->
        <!-- end #sidebar -->

    }
    else
    {
        <div id="page">
            <!-- end #content -->
            <div id="content2">
                @RenderBody()
            </div>
            <div style="clear: both;">
                &nbsp;</div>
        </div>
        <!-- end #page -->
        <!-- end #sidebar -->

    }

, если вам нужно увидеть раздел в about.cshtml

, используйте

@section Sidebar{
    @Html.Partial("_yourbanner")
}

, если вы ненужен баннер, не включайте его

0 голосов
/ 14 октября 2011

Во-первых, просто чтобы уточнить: действительно ли Индекс и AboutUs являются частичными представлениями в вашем сценарии?Это может изменить мой совет, но обычно я вижу три варианта:

  1. Razor Helper , создайте Banner.cshtml в App_Code со следующим кодом:

    @helper Show(){
        <img src="mybanner.png"/>
    }
    

    Затем вызовите Index.cshtml:

    @Banner.Show()
    
  2. Расширение Html Helper , здесь, возможно, немного избыточно (см. Учебник в Интернете)

  3. Частичное представление : создайте "_MyBanner.cshtml" и используйте в Index.cshtml следующее:

    @Html.Partial("_MyBanner");
    

(число3 может быть сложным, если Index и AboutUs также являются частичными представлениями, но 1 - тот, который я выбрал бы.)

Примечание. Между Html.Partial и Html.RenderPartial есть разница.Последний пишет напрямую в выходной поток и потребует, чтобы вы вызывали его в скобках.В MVC AFAIK рекомендуется использовать Html.Partial.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...