Как получить доступ к анонимному типу, возвращаемому контроллером в поле зрения? - PullRequest
2 голосов
/ 09 марта 2009

В MVC RC2 я возвращаю анонимный тип объекта и хочу получить к нему доступ в строго типизированном виде. Допустим, что в контроллере я запрашиваю базу данных и выбираю значения в типе var и хочу передать его в строго типизированное представление. Как я могу получить к нему доступ в этом представлении?

Ответы [ 2 ]

1 голос
/ 10 марта 2009

Вы не можете передать его в строго типизированное представление, но вы можете превратить его в словарь и получить доступ к свойствам таким образом.

Как часть System.Web.Routing, существует новый объект под названием "RouteValueDictionary", который может принимать в качестве конструктора анонимный объект.

Команда MVC использует это во многих своих помощниках.

Пример:

IDictionary<string, object> myDict = new RouteValueDictionary(anonymousObject);
1 голос
/ 09 марта 2009

Ну, ты не можешь. Анонимный тип, не может быть доступен по имени. В этом весь смысл. Вы не можете передать тип, тип существует внутри, и вы можете предоставить тип только как 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);

Если вам нужен доступ к типу, вы должны создать пользовательский объект / тип, который можно идентифицировать по имени.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...