#c# #asp.net-mvc
#c# #asp.net-mvc
Вопрос:
Я не понимаю, почему мы иногда используем ViewBag без ссылки (я имею в виду @) на контроллер в представлении, например:
@{
string urlFilter = Url.Action("Index", "Home", new
{
CustID = ViewBag.custid,
Errors = ViewBag.errors
});}
Это выглядит как часть кода c # в представлении. Я знаю, что razor synthax позволяет нам вводить код c # в представление, но не понимаю, какой смысл использовать ViewBag без @ in View
Ответ №1:
В данном случае это связано с тем, что он находится в пределах блока кода C # ( @{ ... }
), а не в разметке HTML.
Однако, если вы пытались ссылаться на ViewBag, встроенный в HTML-блок, вам нужно будет добавить к нему префикс, @
чтобы убедиться, что он был обработан движком Razor.
например:
<p>@ViewBag.Name</p>
ViewBag
является динамическим свойством WebPageView
, из которого выводится представление.
Вы можете узнать о синтаксисе Razor здесь: https://learn.microsoft.com/en-us/aspnet/web-pages/overview/getting-started/introducing-razor-syntax-c
Комментарии:
1. Итак, вместо создания ViewBag в контроллере я могу создать его в представлении, и он работает так же, как если бы я создал ViewBag в контроллере? Я думаю, я все еще не понимаю, почему мы вводим такой код (ViewBag.custid и т. Д.) В View вместо контроллера
2. @Muska обычно вы устанавливаете значения ViewBag в контроллере, а затем ссылаетесь на них в представлении. Вам не нужно создавать ViewBag самостоятельно. С помощью MVC framework
ViewBag
, на который вы можете ссылаться в контроллере, и установленные значения будут такими же, как то, на что вы можете ссылаться из блоков кода Razor для представления, отображаемого в результате с помощью этого контроллера.