Asp.net mvc 如何访问视图中控制器返回的匿名类型?
在mvcrc2中,我返回一个匿名对象类型&我希望在强类型视图中访问它。Asp.net mvc 如何访问视图中控制器返回的匿名类型?,asp.net-mvc,Asp.net Mvc,在mvcrc2中,我返回一个匿名对象类型&我希望在强类型视图中访问它。 假设在控制器中,我查询数据库并获取vartype中的值&我希望将其传递给强类型视图。我如何在该视图中访问它?嗯,你不能。匿名类型,无法通过名称访问。这就是重点。您不能传递类型,该类型存在于内部,您只能将该类型公开为System.Object 您总是可以使用反射来挖掘属性并以这种方式访问它们,但除此之外,没有其他方法可以绕过它 var q = new { MyProperty = "Hello World" }; var t
假设在控制器中,我查询数据库并获取vartype中的值&我希望将其传递给强类型视图。我如何在该视图中访问它?嗯,你不能。匿名类型,无法通过名称访问。这就是重点。您不能传递类型,该类型存在于内部,您只能将该类型公开为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);
如果需要访问该类型,则应创建一个用户定义的对象/类型,该对象/类型可以通过名称进行标识。您不能将其传递给强类型视图,但可以将其转换为字典并以这种方式访问属性 作为System.Web.Routing的一部分,有一个名为“RouteValueDictionary”的新对象,它可以将匿名对象作为其构造函数 MVC团队在他们的许多助手中使用了这一点 例如:
IDictionary<string, object> myDict = new RouteValueDictionary(anonymousObject);
IDictionary myDict=新的RouteValueDictionary(匿名对象);