【问题标题】: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 的情况下传递多个值?

【问题讨论】:

  • 使用viewbag或者创建一个ViewModel

标签: 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

【讨论】:

    猜你喜欢
    • 2015-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-13
    • 1970-01-01
    • 2018-02-03
    相关资源
    最近更新 更多