PartialView не выводится в разделе _Layout.cshtml RenderBody () - PullRequest
1 голос
/ 19 марта 2012

Я создал VIEWS и PartialVIEWS, но до сих пор я видел, что VIEWS визуализируются / выводятся в раздел RenderBody (), который установлен в _Layout.cshtml

Следовательно, если у меня естьв моем _Layout.cshtml ...

<div id="container">
    <div id="col1"> 
        <p>Advert1 aliquip</p> 
         </div> 
         <div id="col2outer1"> 
            <div id="col2mid1">                    
                 @RenderBody()
                 <br /><b /> <br />
        </div>
       <div id="col2side1"> 
           <p>Advert2 </p> 
       </div> 
</div>

ВСЕ ВИДЫ будут вызываться в секции @RenderBody ().Это будет означать, что Advert1 и Advert2 всегда будут отображаться при каждом вызове VIEW.Однако, когда я вызываю PartialView, этого не происходит.Advert1 и Advert2 не появляются.Как я могу обойти это без ручного создания вышеупомянутого в каждом PartialView.

Спасибо Kindly Naren

Ответы [ 4 ]

1 голос
/ 19 марта 2012

Если я правильно понял ваш вопрос, использование asp.net mvc «разделы» может быть решением для вашей ситуации.

define section

call section

1 голос
/ 19 марта 2012

Если вы полагаетесь на _ViewStart.cshtml, чтобы применить _Layout.cshtml к частичному, не делайте этого.Попробуйте явно установить Layout в начальном блоке кода.

Я использую вложенные макеты для набора пользовательских шаблонов редактора в моем последнем проекте, пытаясь получить _ViewStart.cshtml, чтобы вставить эту папку простоне работает, потому что _ViewStart не выполняется для Partials.Как только я вручную указал Layout непосредственно в частичном, это было нормально.

Лично я был доволен этим - это было лишь незначительное раздражение.

Итак, в качестве примера:

(In ~/Views/Shared/_PartialLayout.cshtml)

<div class="partialContainer">
@RenderBody()
</div>

А вот примерный фрагмент выглядит следующим образом:

{
  Layout = "~/Views/Shared/_PartialLayout.cshtml";
}
<p>Hello World!</p>

(Обратите внимание, что вы должны явно установите макет, потому что _ViewStart не обрабатывается для частичек)

Во время выполнения - это частичное отображение будет фактически:

<div class="partialContainer">
<p>Hello World!</p>
</div>

То, чего я считаю, это то, чего вы хотите достичь.

Обратите внимание, что фактическое расположение макета частичных представлений не имеет значения, вы можете поместить его в общую папку, если хотите, или вы можете поместить его в папку представлений определенного контроллера - если вы затем обращаетесьэто правильно в частичном представлении члена Layout, все будет хорошо.

Ответ на этот другой SO: Правильный способ использования _viewstart.cshtml и частичных Razor представлений? , который фактически ссылается на более раннюю ошибку в Razorтакже использует тот факт, что PartialViewResults не выполняет ViewStart.

1 голос
/ 19 марта 2012

Если я правильно понял: - ваши представления RenderBody не являются частичными, но - Ваши Adv1,2 являются частичными взглядами?

Если так - это должно работать, если вы вызываете @ Html.RenderPartial ("adv1") в ваших контейнерах div.

0 голосов
/ 19 марта 2012

Что вы возвращаете в своем классе Controller для View?Вы возвращаете View или PartialView (m)?Если вы возвращаете View (m) и визуализируете как Partial, это может привести к каким-то странным вещам, если я правильно помню ...

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