c# - MVC 4 如何正确地将数据从 Controller 传递到 View

标签 c# .net asp.net-mvc linq asp.net-mvc-4

我目前有一个带有 LINQ 语句的 Controller ,我正在将数据从中传递到我的 View 。我正试图找到一种更有效和更好的编码方法来做到这一点。 我的家庭 Controller 声明如下。

Var Melt
  Furnace1 =
           (from item in db.tbl_dppITHr
           where item.ProductionHour >= StartShift && item.ProductionHour <= EndDate
           select item).Sum(x => x.Furnace1Total),

ViewData["Furnace1Total"] = Melt.Furnace1;

在我看来,我然后引用 ViewData 来显示它。使用

 @model dynamic

现在我在 Index 方法中有很多 linq 语句。对于每一个我都在做 ViewData[]

我希望有人可以展示我如何在不使用 ViewData 或 ViewBag 方法的情况下将多个变量从 Controller 传递到 View 。在我看来,我将如何访问它。

最佳答案

您应该使用所有需要的数据创建一个 ViewModel,然后将其传递给 View 。

public class ViewModel 
{
   public List<int> Melt1 { get; set; }

   public void LoadMeltProperties() 
   {

       if (Melt1 == null) 
       {
          Melt1 = new List<int>();
       }

       Melt1 = (from item in db.tbl_dppITHr
       where item.ProductionHour >= StartShift && item.ProductionHour <= EndDate
       select item).Sum(x => x.Furnace1Total).ToList();
   }

   public ViewModel Load()
   {
       LoadMeltProperties();
       return this;
   }
}

public ActionResult YourControllerAction() 
{
      var vm = new ViewModel().Load();
      return View("ViewName", vm);
}

然后在您的 View 中您可以使用强类型模型而不是动态

@model ViewModel

然后您可以通过以下方式迭代您的 ViewModel 属性:

foreach(var melt in Model.Melt1) {
     // do what you require
}

关于c# - MVC 4 如何正确地将数据从 Controller 传递到 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18608452/

相关文章:

c# - 找不到类型或命名空间名称 'ClaimsAuthenticationManager'

asp.net - 当用户在 mvc asp 身份中创建帐户时如何禁用电子邮件确认

asp.net-mvc - PartialView 方法中的路径(在应用程序之间共享它们)

.net - 枚举应该位于 MVC 项目结构中的什么位置?

c# - 将 NuGet .pdb 复制到输出目录

c# - 如何修改此正则表达式,使其只匹配目录并排除文件?

c# - 无法识别 Web API Controller

c# - 从两行获取字符串的正则表达式模式

asp.net - 在 ASP.NET 5(核心)中添加对类库项目的引用时出现问题

.net - 如何使用默认电子邮件客户端发送电子邮件?