MVC 4 come passare correttamente i dati dal controller alla vista

Al momento ho un controller con una istruzione LINQ che sto trasmettendo dati dalla mia vista. Sto cercando di trovare un metodo di codifica più efficiente e migliore per farlo. La mia dichiarazione del controller di casa è la seguente.

Var Melt Furnace1 = (from item in db.tbl_dppITHr where item.ProductionHour >= StartShift && item.ProductionHour  x.Furnace1Total), ViewData["Furnace1Total"] = Melt.Furnace1; 

A mio avviso, faccio riferimento al ViewData per mostrarlo. utilizzando

  @model dynamic 

Ora ho un sacco di istruzioni linq all’interno del metodo Index. E per ognuno sto facendo ViewData[]

Spero che qualcuno possa mostrare come ho passato più di una var da un controller a una vista senza i metodi ViewData o ViewBag. E come avrei avuto accesso a questo secondo me.

Dovresti creare un ViewModel con tutti i dati necessari e poi passarlo alla vista.

 public class ViewModel { public List Melt1 { get; set; } public void LoadMeltProperties() { if (Melt1 == null) { Melt1 = new List(); } 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); } 

Quindi nella tua vista puoi usare un modello strongly typed piuttosto che dynamic

 @model ViewModel 

È quindi ansible scorrere le proprietà ViewModel tramite:

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

IMHO, dovresti creare un ViewModel e passarlo usando i dati.

Crea una class

 public class MyViewModel { public  MeltFurnace1{get;set;} } 

Nel metodo di azione

 public ActionResult Action() { MyViewModel vm = new MyViewModel(); vm.MeltFurnace1 = something; return View("YourViewName", vm); } 

In vista

 @model MyViewModel //You can access your property using Model.MeltFurnace1 

Se è necessario passare effettivamente i dati dal controller e i relativi dati dipendono dallo stato interno o dai parametri del controller di input o hanno altre proprietà di “dati aziendali”, è necessario utilizzare la parte Modello dal pattern MVC :

Gli oggetti del modello sono le parti dell’applicazione che implementano la logica per il dominio dei dati dell’applicazione. Spesso, gli oggetti del modello recuperano e memorizzano lo stato del modello in un database. Ad esempio, un object Product può recuperare informazioni da un database, operare su di esso e quindi scrivere nuovamente le informazioni aggiornate in una tabella Prodotti in un database SQL Server.

È ansible visualizzare i dettagli qui o cercare i modelli e la convalida nella parte ASP.NET MVC del tutorial di Microsoft.

  1. Aggiungi class modello:

     public class Person { public int Id { get; set; } public string Name { get; set; } public int Age { get; set; } public string City { get; set; } } 
  2. Passa l’object del modello alla vista:

     public ActionResult Index() { var model = GetModel(); return View(model); } 
  3. Aggiungi fortemente digitato Visualizza tramite il tipo di modello definito:

     @model Person 
  4. Usa la variabile Model nella tua vista:

     @Model.City 

Usa invece i modelli

 var Melt Furnace1 = (from item in db.tbl_dppITHr where item.ProductionHour >= StartShift && item.ProductionHour <= EndDate select item).Sum(x => x.Furnace1Total), return View("SomeVIew",MeltFurnace1) 

In vista @model "TypeOfMeltFurnace1"

È ansible fare riferimento al modello in vista per modello di proprietà