【问题标题】:passing anonymous object to view将匿名对象传递给查看
【发布时间】:2011-11-02 17:25:56
【问题描述】:
我想将两个值从控制器操作传递到 asp.net MVC 3 Razor 视图。我在行动方法中是这样做的:
var model = new { reportid = rid, refno = refernumber};
return View(model );
但是当我尝试在这样的视图中访问它时:
@Model.reportid
我明白了,对象不包含属性 reportid
如何在不使用 viewbag 的情况下传递多个值?
【问题讨论】:
标签:
asp.net-mvc
asp.net-mvc-3
【解决方案1】:
好吧,我强烈建议您使用 ViewModel 类。但是如果由于某种原因你对额外的视图模型类有恐惧症,你可以使用名为 Tuple
的 C# 功能
var model = Tuple.Create(firstObject, secondObject)
然后您的视图将是 Tuple 类型,例如
@model Tuple<int, string>
你可以像这样访问它们
@Model.Item1
然后你可以祝贺你自己,你已经取得了很好的隐藏意义:)
【解决方案2】:
完成此任务的另一种方法是使用ExpandoObject。
dynamic model = new System.Dynamic.ExpandoObject();
model.reportid = 123
model.refno = 456;
将视图模型类型设置为dynamic:
@model dynamic
@Model.reportid
@Model.refno