Каково точное значение этого параметра ViewBag на странице .NET Razor? - PullRequest
0 голосов
/ 21 октября 2018

Я очень новичок в .NET (я пришел из фреймворка Java и Spring), и у меня есть следующие сомнения по поводу страниц Razor.

У меня есть очень простая страница, подобная этой:

@model Vidly.Models.Customer

@{
    ViewBag.Title = Model.Name;
    Layout = "~/Views/Shared/_Layout.cshtml";
}

<h2>@Model.Name</h2>

в первой строке объявляется объект модели, используемый этой страницей, имеющий тип Vidly.Models.Customer (содержит данные, используемые в представлении), на самом деле я получаю доступ и показываюзначение свойства Vidly.Models.Customer.Name :

<h2>@Model.Name</h2>

Мои сомнения связаны с этим разделом предыдущего кода:

@{
    ViewBag.Title = Model.Name;
    Layout = "~/Views/Shared/_Layout.cshtml";
}

Чтоэто точно делает?

Я думаю, что он объявляет какой-то объект, содержащий 2 свойства, которые представляют что-то вроде настроек этой страницы просмотра (поправьте меня, если я делаю неправильное утверждение).

В этой строке указано, что такое макет страницы:

Layout = "~/Views/Shared/_Layout.cshtml";

Но что именно означает эта строка:

ViewBag.Title = Model.Name;

Что такое ViewBag ?а что значит этот параметр?Model.Name должен содержать значение свойства Name внутри переданного объекта модели.Что именно делает?

Ответы [ 2 ]

0 голосов
/ 21 октября 2018

В ASP.NET MVC есть три способа - ViewData, ViewBag и TempData для передачи данных из контроллера в представление.

Что такое ViewBag?

  • Может использоваться ViewBagдля передачи данных из контроллера в представление, в основном временные данные.
  • ViewBag существуют только с запросом http.Он будет уничтожен при перенаправлении.
  • ViewBag является свойством класса ControllerBase.

Что именно означает эта строка:

ViewBag.Title = Model.Name;

ViewBag может быть более удобнымработать с, так как это не требует кастинга.Вы устанавливаете заголовок, используя ViewBag.Поскольку ViewBag является производным от DynamicViewData, это означает, что он позволяет создавать динамические свойства с использованием точечной нотации @ViewBag.SomeKey = <value or object>.

Примечание. ViewBag недоступен на страницах Razor.

0 голосов
/ 21 октября 2018

Как правило, он используется для передачи небольших объемов данных между контроллерами и представлениями.

В приведенном выше примере это наиболее вероятная установка title страницы, которая обычно находится в _Layout.cshtml

<title>My Page - @ViewBag.Title</title> 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...