何时在视图中使用ViewBag,ViewData或TempData.在控制器中我想将对象发送到视图.我想知道在这种情况下哪个是最好的.我想要视图页面中的对象.
And*_*ber 33
仅在需要数据才能用于下一个请求时使用TempData.
TempData["myInfo"] = "my info";
Run Code Online (Sandbox Code Playgroud)
然后在下一个请求中,它会在那里......但之后会消失.
除了@model之外,使用ViewBag将大部分额外数据需求传递到您的视图
ViewBag.MyInfo = "my info";
Run Code Online (Sandbox Code Playgroud)
然后从您的视图中访问它.
使用ViewData访问/输入与ViewBag完全相同的信息,但作为集合而不是动态对象的属性除外.
ViewData["MyInfo"]
Run Code Online (Sandbox Code Playgroud)
访问与ViewBag.MyInfo完全相同的数据
请注意,我使用了字符串,但它们可以存储您想要的任何对象.
另外需要注意的是:TempData和ViewData都是存储对象值的字典,因此在使用它们时必须将它们转换为原始类型.然而,ViewBag使用动态,并且您并不总是需要转换它,因为它是在运行时完成的.某些方法(如扩展方法)无法处理动态,因此您需要在这些情况下进行转换.
Ada*_*SFT 23
恕我直言,为体面的设计实践 -
ViewBag =从不.ViewData =从不.这些是基于字符串的神奇字段,并且可以在任何编译时实例中捕获.
您的VieWModel应该包含它需要的一切.这就是生活中的目的.不要没有它的目的.TempData仅用于状态消息或您不想缓存的对象,但仅适用于下一个请求.
| 归档时间: |
|
| 查看次数: |
16512 次 |
| 最近记录: |