Archives mensuelles : février 2013

ASP.NET MVC : Mise en place d’un Layout différent dans une Area

Pour mon projet actuel en ASP.NET MVC, le site est composé d’une interface publique et une interface d’administration, les 2 interfaces ayant un design différent. Pour cela nous avons mis en place 2 layouts pour ces 2 parties. Par défaut, toutes les pages utilisent le layout par défaut _Layout.cshtml défini dans le dossier Shared du dossier Views de l’application MVC.

La solution provient de l’utilisation de _ViewStart.cshtml. Ce fichier a été introduit dans MVC3 pour les projets en Razor. Le code de cette portion de page est commun à toutes les vues situées dans le dossier ou sous dossier de celui-ci. Ainsi vous pouvez placez du code qui est commun à toutes vos pages dans ce fichier afin d’éviter le copier-coller.

Par défaut, il existe un fichier _ViewStart.cshtml à la racine du dossier Views de votre application MVC qui ne contient que le code suivant qui permet de définir le « layout » par défaut de votre application :

@{
    Layout = "~/Views/Shared/_Layout.cshtml";
}

Dans notre cas, la définition d’un nouveau Layout pour une Area se fera donc en plaçant à la racine de votre Area le fichier_ViewStart.cshtml. Ce fichier contiendra la spécification du Layout pour toutes les vues de votre Area. Cela permet d’éviter de le définir dans chacune de vos vues. Le code du fichier est le suivant :

@{
    Layout = "~/Areas/Admin/Views/Shared/_Layout.cshtml";
}

Arborecence de la solution

Et voila !!