2013-09-23 61 views
2

我有一個asp.net MVC4 web項目,它顯示了當天的生產數據列表。我添加了一個日期時間選擇器,它允許用戶選擇他們想要顯示信息的日期。ASP.NET MVC將DataTime傳遞到查看

我遇到的問題是我不知道如何去將信息傳遞迴從控制器內部的方法的視圖。

我有回傳給控制器的日期。在控制器內部,我正在做一個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傳遞迴視圖,以便在表格中顯示它。

回答

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

然後在您的視圖中使用新的強類型視圖模型:

@model ProductionDataViewModel 
0

這裏的問題是,你沒有返回任何東西到你的視圖return View();這個視圖只是呈現視圖,沒有數據會傳遞給它。

如果ProductionData越來越值,那麼

回報return View(ProductionData);

然後,您可以使用視圖傳遞的值。

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 
0

ProductionData變量現在應該IEnumerbable<tbl_dppITHrRow>類型。

您可以使用此代碼在你行動的底部從控制器模型傳遞:

return View(ProductionData); 

在你看來,你可以把下列剃刀代碼在您看來我們做這個模型類型。CSHTML文件:

@model IEnumerbable<tbl_dppITHrRow> 

然後,你可以用你的模型視圖代碼:

@foreach(var row in Model) { 
    <div>@row.Value</div> 
} 
相關問題