我想将两个值从控制器动作传递到asp.net MVC 3 Razor视图。我在行动方法中这样做:
var model = new { reportid = rid, refno = refernumber};
return View(model );
但是当我尝试在这样的视图中访问它时:
@Model.reportid
我知道,对象不包含属性reportid
如何在不使用viewbag的情况下传递多个值?
答案 0 :(得分:16)
好吧,我强烈建议您使用ViewModel类。但如果由于某种原因你有额外的viewmodel类的恐惧症,你可以使用名为元组
的C#功能var model = Tuple.Create(firstObject, secondObject)
然后你的视图将是Tuple类型,例如
@model Tuple<int, string>
你可以像这样访问它们
@Model.Item1
然后你可以祝贺自己,你已经实现了隐藏意义的好混乱:)
答案 1 :(得分:3)
您正在将匿名对象传递给视图,但匿名对象是程序集的内部对象,因此您无法执行此操作。
如果您不想定义自己的模型或使用ViewState和ViewBag,并且仍想使用匿名对象 - this帖子对您有所帮助。
答案 2 :(得分:2)
完成此任务的另一种方法是使用ExpandoObject
。
dynamic model = new System.Dynamic.ExpandoObject();
model.reportid = 123
model.refno = 456;
将视图模型类型设置为dynamic
:
@model dynamic
@Model.reportid
@Model.refno