我正在阅读一本关于 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 一起使用时可能无关紧要,因为 Web 是无状态的。是这样吗?