如果ViewBag
和ViewData
在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中的性能差异?