Mvc规则和概念

时间:2013-03-02 21:43:16

标签: asp.net-mvc-4

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

1 个答案:

答案 0 :(得分: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。然后将此对象传递给View。在您的视图中,您可以声明模型:

@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);
}