2

我有这个问题我正在寻找答案,我看到了这个问题的答案

ViewData 和 ViewBag 有什么区别?

许多人在回答中提到既不使用 ViewBag 也不使用 ViewData 是“安全的”。我不明白为什么,因为我对 Web 应用程序及其整个概念以及整个 MVC 都是新手。所以我的问题是:

  1. 为什么 ViewBag 和 ViewData 不是传递数据的安全方式?
  2. 传递数据的最佳方式是什么?(最重要的问题)

我真的很感谢你的帮助!

4

2 回答 2

1

有过争论。我总是使用特定的视图模型。

您也可以使用 ViewBag 或 ViewData 但不是首选。

ViewData 不安全,因为,

ViewData["foo"]可能未在控制器中设置,但您尝试访问它,因此您将失败。因此ViewBag介绍了它使用语言的动态特性。

所以 ViewData 更安全一些。然而,作为一个好的设计,为每个视图创建视图模型对象是理想的。

于 2012-11-23T06:30:51.760 回答
1

另一种方法是强类型模型对象。有些人更喜欢这个,因为它可以防止在使用动态 ViewBag 对象时可能发生的一些运行时异常。它还允许使用自动完成等有用的 IDE 功能,并倾向于生成更易读的代码。

Microsoft 的 Rick Anderson有一篇很好的博客文章描述并提供了不同选项的示例,您可能会发现这些选项很有用。

如果强类型选项看起来像您想要追求的东西,本教程可能会很有用:http ://www.asp.net/mvc/tutorials/mvc-4/getting-started-with-aspnet-mvc4/accessing -your-models-data-from-a-controller

于 2012-11-23T06:59:54.713 回答