Как передать раздел в частичное в макете? - PullRequest
1 голос
/ 06 апреля 2020

In ASP. net MVC 5 Мы можем передать раздел в макет, используя

@section AnySection{
  //section code here
}

, и отобразить его в Layout с помощью

@RenderSection("AnySection", required: false)

Но как мы можем передать этот раздел снова в частичное внутри этого макета? См. Изображение ниже для справки how can we pass that section to partial? subheader-v1 - это частичное представление внутри моего макета. Я создал свой макет со многими частичными видами. Когда я пытаюсь сделать это, как упомянуто в изображении выше, это выдает мне эту ошибку

Файл "~ / Views / Shared / partials / _subheader / subheader-v1.cs html" не может быть запрошен напрямую, потому что он вызывает метод "RenderSection". '

Ответы [ 3 ]

4 голосов
/ 06 апреля 2020

Вы не передаете раздел в макет. Это макет, который определяет, какие разделы должны (или могут) отображаться в представлении ... он также определяет, где в представлении должен отображаться раздел.

Из Документация MS :

Макет может опционально ссылаться на один или несколько разделов, вызывая RenderSection. Разделы предоставляют способ организации, в котором должны быть размещены определенные элементы страницы.

Разделы не работают в частичных представлениях, и это предусмотрено проектом. Вам нужно будет переместить RenderSection к вашему макету и к телу раздела - к вашему виду. См. этот вопрос для получения дополнительной информации.

1 голос
/ 06 апреля 2020

Внутри subheader-v1.cs html (поскольку цель состоит в том, чтобы перевести частичку "CoordinatesSelection" в subheader-v1.cs html) вместо

@RenderSection("Coordinates", required: false) 

FOR

@Html.Partial("CoordinatesSelection", Model)

Код @RenderSection («Coordinates», обязательный: false) был разработан для записи непосредственно в макет, чтобы избежать повторных обращений к нему !!

0 голосов
/ 06 апреля 2020

Два способа:

1. Вы можете перейти с subheader-v1 на layout

макет:

// your subheader-v1 code
@RenderBody()

И вы можете использовать RenderSection в макете

2. Вы можете передать модель в Частичное subheader-v1

* макет:

@Html.Partial("partials/_subheader/subheader-v1",RenderSection("Coordinates",false))
@RenderBody()

* subheader-v1:

@model object
.
.
.
<div class="kt-subheader__wrapper">
   @Html.Raw(Model)

* SelectClosetStore

@section Coordinates{
    //your partial code
}

Я думаю, что первый способ лучше, чем второй.

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