Можно ли использовать ViewBag или модель представления в родительском макете? - PullRequest
0 голосов
/ 18 января 2019

У меня есть веб-сайт .Net Core 2.1, и в основном я пытаюсь получить доступ к данным в моем общем макете, который доступен в дочерних представлениях. Я мог бы получить то, что мне нужно, из чего-то из ViewBag или из модели View в представлении - есть ли способ как-то ссылаться на это?

Если нет идей, как лучше всего получить данные в моем макете? Я взглянул на ViewComponents, например, https://www.davepaquette.com/archive/2016/01/02/goodbye-child-actions-hello-view-components.aspx, но это кажется излишним просто для того, чтобы просто взять что-то вроде строки или модели. К сожалению, я не могу использовать данные сеанса для передачи значений.

Большое спасибо и извините, если это вопрос noob (я один с .net core!).

Ответы [ 2 ]

0 голосов
/ 18 января 2019

Ответ на этот вопрос - да - вы можете использовать объект ViewBag и ViewData дочернего представления в родительском общем макете.

0 голосов
/ 18 января 2019

проходящих объектов

Для передачи объектов вы можете использовать ViewBag или ViewData . Оба работают одинаково, используя ViewDataDictionary ниже, это означает, что вы можете использовать их взаимозаменяемо.

Чтобы установить значение:

ViewBag.HelloWorld = "Hello world!";
ViewData["HelloWorld"] = "Hello world!";

Для использования значения в представлении:

@ViewBag.HelloWorld
@ViewData["HelloWorld"]

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

Отличия от использования ViewBag и ViewData:

ViewBag является производным от DynamicViewData и не требует приведения для использования, но не позволит вам установить ключ с пробелами в нем.

ViewData является производным от ViewDataDictionary и предлагает полезные свойства и функции словаря. Также ключи могут содержать пробелы. Требуется приведение типа или по умолчанию ToString().


Передача блоков HTML

Вы также можете передавать блоки HTML, внутри макета вы можете рендерить секцию

@RenderSection("Header", required: false)

В отдельных представлениях вы можете ввести в этот раздел

@section Header {
    <strong>I sit in the existing header!</strong>
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...