2011-11-01 2 views
1

J'ai une base de données à travers laquelle je me connecte en utilisant Entity Framework. Ma vue de la maison se compose de plusieurs vues partielles qui affichent différentes parties de l'application. Dans mon contrôleur, je voudrais envoyer un modèle contenant tous ces différents objets de données Entity à mon avis, puis envoyer les informations nécessaires à mes vues partielles particulières. Je crois que j'ai besoin d'un modèle de vue pour cela, mais je n'ai jamais fait cela auparavant. Permettez-moi de résumer mon objectif: J'ai quatre tables: currentFav, TopTenFav, Genres et Songs J'ai créé une classe de référentiel avec quelques fonctions de requête telles que trouver toutes les chansons, ajouter une chanson et ainsi de suite. Ma vue d'index est divisée en vues partielles, telles que le favori actuel, le top 10 et les genres.Comment créer Asp.Net MVC 3 voir le modèle

Ma question est comment est-ce que je pourrais envoyer mon modèle du contrôleur à mon vue et puis de là à toutes mes vues partielles, n'importe qui a eu une idée? thx

Répondre

0

Comment je concevoir votre ViewModel est de créer une interface pour chacun de vos vues partielles telles que:

interface IPartialView1 //Name it appropriately 
{ 
    currentFav CurrentFav { get; } 
} 

ensuite sur votre ViewModel réelle:

class HomeViewModel : IPartialView1, IPartialView2,.... 
{ 
    currentFav CurrentFav { get; set; } 
} 

POPULATE votre HomeViewModel comme vous voir en forme, et dans vos vues partielles:

<!-- CurrentFav-Partial.cshtml --> 
@Model IPartialView1 

<span>@model.CurrentFav.color</span> 

Ceci vous permet de créer n'importe quel mode Si vous voulez passer dans la vue, et aussi longtemps qu'il a l'interface que chacun des Partials a besoin de rendre, ils peuvent le faire. Chaque ViewModel peut contenir n'importe quel nombre d'autres modèles/classes via Interfaces pour tout type de vue que vous créez.

+0

ok, semble très intéressant, je vais donner un essai –

+0

une question, où devrais-je créer les interfaces? dans mon dossier de modèle ou mon dossier de vues? –

+0

Pour la simplicité je recommanderais dans le dossier modèle. La seule chose dans le dossier views devrait être les fichiers html-ish. –