ASP.NET MVC 4如何通过同一个控制器传递多个对象到视图

本文关键字:对象 视图 控制器 MVC NET 同一个 何通过 ASP | 更新日期: 2023-09-27 18:17:25

. NET MVC4 Web应用程序我试图使用实体框架从SQL数据库显示一些信息的表。从SQL表生成视图(首先使用数据库和EF)对我来说很容易,但现在我被一个更概念性的问题困住了。现在我的控制器将实体对象列表传递给我的视图。

 public ActionResult Index()
{
    return View(db.APU_daily_summary_test.ToList());
}

但是现在我需要在SQL中计算这些列的最小值和最大值。我知道我应该在模型中计算最小和最大,但之后我不知道我应该如何通过控制器将这些信息传递给视图。我需要视图模型吗?一个API ?一个额外的控制器?

ASP.NET MVC 4如何通过同一个控制器传递多个对象到视图

您刚刚描述了一个视图模型的完美用例。

下面是我推荐的结构:
public class MyViewModel
{
    public int MaxOfColumn { get; set; }
    public List<InnerViewModel> Items { get; set; }
}
public class InnerViewModel
{
    // Create properties here which represent the Model's columns you need to display
}

视图模型不仅有助于将其分解,这样您就不必在视图中进行许多数据操作。这也打破了在更复杂的模型中EF对象具有循环引用的一个非常常见的错误。

你可以使用视图模型…

public class MyViewModel
{
    public List<MyType> MyList { get; set; }
    public int MaxVal { get; set; }
    public int MinVal { get; set; }
}

…并将视图与模型关联…

或者简单地从视图中调用聚合的LINQ函数Max和Min:

 {@ int max = Model.Max(x => x.MyColumn); }