ViewData.Model只是将模型对象从控制器的动作传递给视图的另一种方式。您可以使用此方法确保您的视图的模型是强类型的,然后可以使用View中的“@Model”引用您的对象。另外(最好),你可以传递你的模型对象从动作来使用“返回视图(t);”来查看。其中t =物体。
return View(myObject);
最后,使用
ViewData.["someName"] = someObject
将是一个松散类型的对象,并使用@Model从查看你不能引用您的对象。相反,您必须在视图中将ViewData作为模型类型来转换,以便能够引用它。例如:
// in the action:
ViewData["obj"] = someObject;
// in the view:
var objData = ViewData["obj"] as MyObjectClass
// referencing a property of the object:
@objData.SomeProperty
所以你可以看到当你选择这种方法时会有一些额外的工作。就我个人而言,我并不经常使用ViewData ......当我需要将某些内容作为视图模型的一部分包含在视图中时,ViewBag对我更有意义。