Asp.net mvc 4 Mvc规则和概念

Asp.net mvc 4 Mvc规则和概念,asp.net-mvc-4,Asp.net Mvc 4,一个视图只能有一个@model文件夹。ModelName,但如果我想在一个视图中显示来自两个不同表的数据,该怎么办?我应该怎么做?正确的方法是什么?例如,如果我想在一个视图中选择当前用户的所有利润,并选择当前用户的所有成本,那么显然这是两个具有两种不同模型的表。基本上,我的问题是,在哪里可以找到asp.net mvc模式的一些规则和概念?您可以创建一个称为ViewModel的东西。ViewModel可以包含一个或多个实体、方法、附加字段等。然后将此ViewModel传递给视图。比如说, name

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

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

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

        public decimal DoSomeCalculations()
        {
            // Do something
        }
    }
}
在您的操作中,创建此ViewModel类的实例并初始化属性Profit and Cost。然后将此对象传递给视图。在视图中,您可以声明模型,如:

@model Sample.ProfitCostViewModel
并将其用作

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

创建一个将两个模型都作为成员的模型在我看来我应该@ProfitCostViewModel,但实际上我不明白你们的意思,请提供一个简单的例子,就像你们为模型类做的那个样
public ActionResult YourAction()
{
    var profitCostVm = new ProfitCostViewModel();
    profitCostVm.Profit = LoadProfitFromSomewhere();
    profitCostCm.Cost = LoadCostFromSomewhere();

    return View(profitCostCm);
}