为什么我们有 ViewBag 和 ViewData,如果它们在 ASP.NET 核心 MVC 中做同样的事情
Why do we have ViewBag and ViewData, if they are doing the same thing in ASP.NET Core MVC
如果 ViewBag
和 ViewData
在 ASP.NET 核心 MVC 中做同样的事情,为什么我们会有它们?有什么是 ViewBag
可以做而 ViewData
不能做的 - 反之亦然吗?
有什么具体情况我应该在什么时候更喜欢一个?
它们很相似,但主要区别在于 ViewBag 使用 dinamyc 类型,允许使用不太复杂的语法。
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 vs ViewData performance difference in MVC?
如果 ViewBag
和 ViewData
在 ASP.NET 核心 MVC 中做同样的事情,为什么我们会有它们?有什么是 ViewBag
可以做而 ViewData
不能做的 - 反之亦然吗?
有什么具体情况我应该在什么时候更喜欢一个?
它们很相似,但主要区别在于 ViewBag 使用 dinamyc 类型,允许使用不太复杂的语法。
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 vs ViewData performance difference in MVC?