передача анонимного объекта для просмотра - PullRequest
8 голосов
/ 02 ноября 2011

Я хочу передать два значения из действия контроллера в asp.net MVC 3 Razor view.Я делаю так в методе действия:

var model = new { reportid = rid, refno = refernumber};
return View(model );

, но когда я пытаюсь получить к нему доступ, как это:

@Model.reportid

Я получаю, объект не содержит свойства reportid

Как я могу передать несколько значений без использования viewbag?

Ответы [ 3 ]

16 голосов
/ 03 ноября 2011

Ну, я настоятельно рекомендую вам использовать класс ViewModel.Но если по какой-то причине у вас есть боязнь дополнительных классов модели представления, вы можете использовать функцию C # с именем Tuple

var model = Tuple.Create(firstObject, secondObject)

, и тогда ваше представление будет иметь тип Tuple, например

@model Tuple<int, string>

и вы можете получить к ним доступ вот так

@Model.Item1

А потом вы можете поздравить себя, вы добились хорошего беспорядка со скрытым значением:)

3 голосов
/ 02 ноября 2011

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

Если вы не хотите определять свою собственную модель или использовать ViewState и ViewBag и по-прежнему хотите использовать анонимные объекты - эта публикация будет вам полезна.

2 голосов
/ 03 марта 2012

Другой способ выполнить эту задачу - использовать ExpandoObject.

dynamic model = new System.Dynamic.ExpandoObject();
model.reportid = 123
model.refno = 456;

Установите тип модели вида на dynamic:

@model dynamic

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