0

一个视图只能有一个@model Folder.ModelName,但如果我想在一个视图中显示来自两个不同表的数据怎么办?我应该怎么做,正确的方法是什么?例如,如果我想在一个视图中选择当前用户的所有利润并选择当前用户的所有成本,那么显然这是具有 2 个不同模型的 2 个表。基本上我的问题是,我在哪里可以找到该asp.net mvc模式的一些规则和概念?

4

1 回答 1

2

您将创建一个称为 ViewModel 的东西。ViewModel 可以包含一个或多个实体、方法、附加字段等。然后您将这个 ViewModel 传递给您的 View。例如,

namespace Sample
{
    public class ProfitCostViewModel
    {
        public Profit Profit { get; set; }
        public Cost Cost { get; set; }

        public decimal DoSomeCalculations()
        {
            // Do something
        }
    }
}

在您的 Action 中,创建此 ViewModel 类的实例并初始化属性 Profit 和 Cost。然后将此对象传递给视图。在您的视图中,您可以声明模型,例如:

@model Sample.ProfitCostViewModel

并将其用作

<p>Current profit or something: @Model.Profit.SomeProfitProperty</p>
<p>Sample cost: @Model.Profit.SomeCostProperty</p>

这就是您将两个或多个实体作为模型传递给您的视图的方式。

更新:您的操作可能类似于:

public ActionResult YourAction()
{
    var profitCostVm = new ProfitCostViewModel();
    profitCostVm.Profit = LoadProfitFromSomewhere();
    profitCostCm.Cost = LoadCostFromSomewhere();

    return View(profitCostCm);
}
于 2013-03-02T21:54:01.267 回答