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

Asp.net mvc 在asp.net mvc中使用viewData dictionary和viewData.Model有什么区别,asp.net-mvc,Asp.net Mvc,我需要你的帮助 请解释一下在asp.net mvc中使用viewData dictionary和viewData.Model的区别 例如,我会写作 viewData["list"] = list; 我会写 viewData.Model = list; 那么它们之间的区别是什么,何时使用它们 请举例说明。ViewData.Model只是将模型对象从控制器的操作传递到视图的另一种方式。可以使用此方法确保视图的模型为强类型,然后可以在视图中使用@model引用对象 @Model.SomePrope

我需要你的帮助

请解释一下在asp.net mvc中使用viewData dictionary和viewData.Model的区别

例如,我会写作

viewData["list"] = list;
我会写

viewData.Model = list;
那么它们之间的区别是什么,何时使用它们


请举例说明。

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

@Model.SomeProperty
或者,最好使用返回视图将模型对象从动作传递到视图;其中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。。。当我需要将未包含在viewmodel中的内容发送到视图时,ViewBag对我来说更有意义