2013-09-23 3 views
2

У меня есть веб-проект asp.net MVC4, который показывает список производственных данных за этот день. Я добавил сборщик datetime, который позволяет пользователю выбирать дату, на которую они хотят отображать информацию.ASP.NET MVC Passing 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 a определение следующим образом:

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

В вашей точки зрения, вы можете сделать это тип модели, поставив следующий Razor код в ваш вид-х ,cshtml файл:

@model IEnumerbable<tbl_dppITHrRow> 

Затем вы можете использовать модель в вашем представлении кода:

@foreach(var row in Model) { 
    <div>@row.Value</div> 
} 
Смежные вопросы