2012-07-16 14 views
8

Ho due classi modello, ognuna è una tabella in un database. Un modello si chiama "Vestiti" e l'altro "Scarpe".Invio di più di un modello per visualizzare MVC 4

Desidero visualizzare i contenuti di ciascuna tabella nella stessa vista del rasoio, ma MVC mi consente di inviare un solo modello alla vista.

@model IEnumerable<Test.Models.Clothes> 

C'è un modo per inviare più di un modello a una vista del rasoio?

In caso contrario, qual è il modo normale di visualizzare il contenuto di un altro modello in una vista che ha già ricevuto un altro modello. Grazie per il consiglio.

risposta

11

O creare una classe modello di vista che abbia sia la classe come oggetto. Sarebbe quindi digitare sicuro.

public class ViewModelForDisplay 
{ 
     public Clothes Clothes {get; set;} 
     public Shoes Shoes {get; set;} 
} 

//on Controller 
Clothes objClothes = GetClothes(); 
Shoes objShoes = GetShoes(); 

ViewModelForDisplay objViewModel = new ViewModelForDisplay() {Clothes = objClothes, Shoes= objShoes } 

L'altro modo semplice per farlo utilizzando ViewBag.It utilizza la funzione dinamica che è stata aggiunta a C# 4. Permette un oggetto di avere in modo dinamico le proprietà aggiunto ad essa. Anche Safe Type

ViewBag.Shoes= objShoes ; 
ViewBag.Clothes= objClothes ; 

È anche possibile utilizzare ViewData per passare oggetti in html. BUt questo non sarebbe sicuro. Richiede colata

ViewData["Clothes "] = objClothes ; 
ViewData["Shoes "] = objShoes ; 
+3

View modello è l'approccio preferito. – RickAndMSFT

+1

Inoltre, non è una buona idea passare il modello (l'oggetto del database) alla vista. Crea un ViewModel solo con i campi obbligatori –

+0

Grazie per la ripetizione e l'assegnazione di esempi di codice, eventuali possibilità di espansione sul controller? Non funziona per me. – user1448260

1

Crea la tua classe, ovvero Visualizza modello e disponilo di entrambi i modelli.

Problemi correlati