在asp.net mvc中使用viewData字典和viewData.Model有什么区别

时间:2015-04-01 15:30:58

标签: asp.net-mvc

我需要你的帮助。

请有人解释一下在asp.net mvc中使用viewData字典和viewData.Model有什么区别。

例如我可以写

viewData["list"] = list;

我可以写

viewData.Model = list;

那么它们之间的区别是什么,何时使用每一个;

解释一个例子将不胜感激。

1 个答案:

答案 0 :(得分:0)

ViewData.Model是将模型对象从控制器的操作传递到视图的另一种方法。您可以使用此方法确保视图的模型是强类型的,然后可以使用视图中的“@Model”引用您的对象。

@Model.SomeProperty

或者(最好),您可以使用“return View(t);”将模型对象从操作传递到视图。其中t =对象。

return View(myObject);

最后,使用

ViewData.["someName"] = someObject

将是一个松散类型的对象,并且您无法使用View中的@Model引用您的对象。相反,您必须将ViewData作为模型类型转换为View才能引用它。例如:

// in the action:
ViewData["obj"] = someObject;

// in the view:
var objData = ViewData["obj"] as MyObjectClass

// referencing a property of the object:
@objData.SomeProperty

因此,您可以看到选择此方法时需要额外的工作。就个人而言,我不经常使用ViewData ...当我需要向View发送一些未包含在视图模型中的内容时,ViewBag对我更有意义。