将匿名对象传递给视图

8

我希望在控制器操作中将两个值传递到ASP.NET MVC 3 Razor视图。我在操作方法中这样做:

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

但是当我像这样在视图中尝试访问它时:
@Model.reportid

我理解,对象不包含属性reportid

我该如何传递多个值而不使用viewbag ?


使用ViewBag或创建ViewModel。 - RickAndMSFT
2个回答

17

我强烈推荐您使用ViewModel类。但是,如果出于某种原因您害怕使用额外的ViewModel类,您可以使用C#特性,称为Tuple

var model = Tuple.Create(firstObject, secondObject)

然后你的视图将会成为元组类型,例如

@model Tuple<int, string>

你可以像这样访问它们

@Model.Item1

然后你可以恭喜自己,你已经成功创造了一个带有隐含含义的美好混乱 :)


2
我喜欢丑陋的东西也能如此美丽 :) - Serj Sagan

2

另一种完成此任务的方法是使用 ExpandoObject

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

将视图模型类型设置为dynamic

@model dynamic

@Model.reportid
@Model.refno

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接