2

我有一个 asp.net MVC4 web 项目,它显示了当天的生产数据列表。我添加了一个日期时间选择器,它允许用户选择他们想要显示信息的日期。

我遇到的问题是我不确定如何从控制器内部的方法将信息传递回视图。

我有日期传回控制器。在控制器内部,我正在执行一个 LINQ 语句,它允许我只选择当天的生产数据。

  [HttpPost]
    public ActionResult GetProductionDateInfo(string dp)
    {
        DateTime SelectedDate = Convert.ToDateTime(dp);
        DateTime SelectedDateDayShiftStart = SelectedDate.AddHours(7);
        DateTime SelectedDateDayShiftEnd = SelectedDate.AddHours(19);

        var ProductionData =

            from n in db.tbl_dppITHr
            where n.ProductionHour >= SelectedDateDayShiftStart
            where n.ProductionHour <= SelectedDateDayShiftEnd
            select n;


        return View();

我希望将 Var ProductionData 传递回视图,以便将其显示在表格中。

4

4 回答 4

2

您可以ProductionData直接返回到您的视图。

 return View(productionData)

然后在你的视图中你可以拥有@model IEnumerable<Type>

但是,更好的做法是创建一个强类型ViewModel来保存 ProductionData,然后返回以下内容:

 var model = new ProductionDataViewModel();
 model.Load();

 return View(model);

其中model定义如下:

public class ProductionDataViewModel { 

   public List<ProductionDataType> ProductionData { get; set; }
   public void Load() {
       ProductionData = from n in db.tbl_dppITHr
        where n.ProductionHour >= SelectedDateDayShiftStart
        where n.ProductionHour <= SelectedDateDayShiftEnd
        select n;
   }
}

然后在您的视图中使用新的强类型 ViewModel:

 @model ProductionDataViewModel
于 2013-09-23T08:49:33.413 回答
0

这里的问题是你没有返回任何东西到你的视图中,return View();这个视图只是渲染视图,没有数据会传递给它。

如果ProductionData正在获取价值,那么

返回return View(ProductionData);

然后,您可以使用视图中传递的值。

于 2013-09-23T08:47:49.470 回答
0

使用模型,例如:

public class ProductionDataModel
{
    //put your properties in here

    public List<ProductionData> Data { get; set; }
}

然后在你的创建/返回它ActionResult

var ProductionData =
    from n in db.tbl_dppITHr
    where n.ProductionHour >= SelectedDateDayShiftStart
    where n.ProductionHour <= SelectedDateDayShiftEnd
    select new ProductionData
    {
        //set properties here
    };

var model = new ProductionDataModel
{
    Data = ProductionData
};


return View(model);

然后在您的视图中,将您的模型设置在顶部:

@model ProductionDataModel
于 2013-09-23T08:49:18.233 回答
0

您的ProductionData变量现在应该是 type IEnumerbable<tbl_dppITHrRow>

您可以使用操作底部的以下代码从控制器传入模型:

return View(ProductionData);

在您的视图中,您可以通过在视图的 .cshtml 文件中放置以下 Razor 代码来使其成为您的模型类型:

@model IEnumerbable<tbl_dppITHrRow>

然后,您可以在视图代码中使用您的模型:

@foreach(var row in Model) {
    <div>@row.Value</div>
}
于 2013-09-23T08:50:08.840 回答