Я читаю книгу по ASP.NET MVC, и мне интересно, как работает следующий пример:
Пример # 1
контроллер
public class MyController : Controller
{
public ActionResult Index()
{
ViewBag.MyProperty = 5;
return View();
}
}
Вид
<h1>@ViewBag.MyProperty</h1>
Теперь я понимаю, что ViewBag
- это динамический объект, так что как вы можете установить свойство (хотя я мало знаю о динамических объектах, никогда не работал с ними.) Но как представление получает конкретный экземпляр от ViewBag
от контроллера, хотя мы ничего не передаем напрямую?
Я думал, что ViewBag
может быть объектом public
static
, но тогда любое его изменение было бы глобальным и не было бы специфичным для экземпляра представления.
Не могли бы вы рассказать о том, как это работает за кулисами?
Пример # 2
контроллер
public class MyController : Controller
{
public ActionResult Index()
{
ViewBag.MyProperty = 5;
return View();
}
public ActionResult Index2()
{
ViewBag.MyProperty = 6;
return View();
}
}
Теперь скажем, сначала вызывается метод Index
, а затем Index2
. В конце значение ViewBag.MyProperty
закончится как 6 (значение от Index2
). Я чувствую, что это нехорошо делать, но в то же время я чувствую, что я думаю о настольных разработках. Может быть, это не имеет значения, когда используется с ASP.NET MVC, так как сеть не имеет апатридов. Это тот случай?