如何在视图中访问控制器返回的匿名类型?

时间:2009-03-09 06:17:04

标签: asp.net-mvc

在MVC RC2中,我返回一个匿名对象类型&我想在强类型视图中访问它。 让我们说在控制器中我查询数据库&在 var 类型&中获取值我想将它传递给强类型视图。如何在该视图中访问它?

2 个答案:

答案 0 :(得分:1)

嗯,你不能。无法通过名称访问匿名类型。这就是重点。您无法传递类型,类型存在于内部,您只能将类型公开为System.Object。

你总是可以使用反射来挖掘属性并以这种方式访问​​它们,但除此之外,没有办法解决它。

var q = new { MyProperty = "Hello World" };
var t = q.GetType();
var hello = t.GetProperty("MyProperty").GetValue(q, null) as string;
Console.WriteLine(hello);

如果您需要访问该类型,您应该创建一个用户定义的对象/类型,可以通过名称来识别。

答案 1 :(得分:1)

您无法将其传递给强类型视图,但您可以将其转换为字典并以此方式访问属性。

作为System.Web.Routing的一部分,有一个名为“RouteValueDictionary”的新对象,它可以将构造函数作为匿名对象。

MVC团队在他们的许多助手中使用了这个。

示例:

IDictionary<string, object> myDict = new RouteValueDictionary(anonymousObject);