将匿名类型传递给MVC ViewData.Model是否安全?

时间:2008-12-28 21:25:27

标签: c# asp.net-mvc model-view-controller

可以执行以下操作:

View(new {Object A, Object B})

或者应该在新类型中显式声明对象A和对象B吗?

感谢。

4 个答案:

答案 0 :(得分:4)

是的,这样做很好。要获取值,可以使用ViewData.Eval(“PropertyName”),现有的Html帮助程序可以正常使用它们。您无法做的唯一事情是使用<%= ViewData.Model.PropertyName%>

获取对属性的强类型访问权限

答案 1 :(得分:2)

尽管匿名类型对于许多MVC目的而言是通用的,但在这种情况下,我会使用常规命名类,或者推送字典(或内置字典)。否则,您将不得不使用反射/ TypeDescriptor来重新获取值。

答案 2 :(得分:2)

通过传递匿名类型,您无法拥有强类型视图。您还需要在单元测试中使用反射。

答案 3 :(得分:1)

我相信你至少想给他们起名字:

var model = new 
{
    ObjectA = new A(),
    ObjectB = new B(),
};


view(model);