为什么我们有ViewBag和ViewData,如果它们在ASP.NET Core MVC中做同样的事情



如果ViewBagViewData在ASP.NET Core MVC中做相同的事情,为什么我们有它们?有什么ViewBag能做而ViewData不能做的吗?反之亦然?

有什么具体的场景吗?我什么时候应该选择其中一个而不是另一个?

它们相似,但主要区别在于ViewBag使用动态类型,允许不那么复杂的语法。

ViewBag.Example=DateTime.Now;
<p>Result: ViewBag.Example.Year </p>

与此相反,ViewData的相同之处可能是:

ViewData["Example"]=DateTime.Now;
<p>Result: @((ViewData["Example"] As DateTime).Year) </p>

因此,使用ViewData,您需要进行强制转换,并且在执行"强制转换"时可能会收到错误;重命名";,例如,你将得不到Intellisense的帮助。

此外,它似乎是";"较慢";(但还不足以成为一个问题(。示例:ViewBag与ViewData在MVC中的性能差异?

最新更新