2011-05-11 3 views
4

Quand je créé mon premier projet vide MVC 3, c'est le contenu du fichier /Views/Shared/_Layout.cshtml:ASP.NET MVC 3: ViewModel pour le modèle principal?

<!DOCTYPE html> 
<html> 
<head> 
    <meta charset="utf-8" /> 
    <title>@ViewBag.Title</title> 
    <link href="@Url.Content("~/Content/Site.css")" rel="stylesheet" type="text/css" /> 
    <script src="@Url.Content("~/Scripts/jquery-1.5.1.min.js")" type="text/javascript"></script> 
    <script src="@Url.Content("~/Scripts/modernizr-1.7.min.js")" type="text/javascript"></script> 
</head> 

<body> 
    @RenderBody() 
</body> 
</html> 

La première chose que je remarque est que le <title>@ViewBag.Title</title>. La dernière chose que je veux faire est d'utiliser un "ViewBag" dynamique au lieu d'un ViewModel fortement typé. Comment changer mon _Layout.cshtml de sorte que le modèle principal utilise un ViewModel fortement typé à la place?

Répondre

4

Vous pouvez facilement utiliser @model pour définir le type de modèle, mais qui va définir le modèle des pages maîtres ou le créer? Le contrôleur gère sa propre vue et le modèle de la page maître sera différent en fonction du modèle créé dans chaque contrôleur. Ainsi, vous souhaiterez peut-être faire en sorte que tous les modèles transmis aux vues héritent d'une classe de modèle de base possédant les propriétés requises pour la page maîtresse et que le type de base soit le type de base, mais ll sera trop moche. Je suggère de vivre avec pour les cas simples comme le titre ici, si vous trouvez que vous faites beaucoup de choses là-bas, avez votre propre contrôleur, action et vue qui effectuent les parties partagées, et appelez Html.RenderAction() dans la page maître pour l'exécuter.


http://gurustop.net

Questions connexes