Vous pouvez mettre un _ViewStart.cshtml
fichier dans le /Views/Public
dossier qui remplacerait celui par défaut dans le /Views
dossier et spécifier la mise en page souhaitée:
@{
Layout = "~/Views/Shared/_PublicLayout.cshtml";
}
Par analogie, vous pouvez mettre un autre _ViewStart.cshtml
fichier dans le /Views/Staff
dossier avec:
@{
Layout = "~/Views/Shared/_StaffLayout.cshtml";
}
Vous pouvez également spécifier la disposition à utiliser lors du retour d'une vue à l'intérieur d'une action de contrôleur, mais c'est par action:
return View("Index", "~/Views/Shared/_StaffLayout.cshtml", someViewModel);
Encore une autre possibilité est un filtre d'action personnalisé qui remplacerait la disposition. Comme vous pouvez voir de nombreuses possibilités pour y parvenir. A vous de choisir celui qui correspond le mieux à votre scénario.
METTRE À JOUR:
Comme demandé dans la section des commentaires, voici un exemple de filtre d'action qui choisirait une page maître:
public class LayoutInjecterAttribute : ActionFilterAttribute
{
private readonly string _masterName;
public LayoutInjecterAttribute(string masterName)
{
_masterName = masterName;
}
public override void OnActionExecuted(ActionExecutedContext filterContext)
{
base.OnActionExecuted(filterContext);
var result = filterContext.Result as ViewResult;
if (result != null)
{
result.MasterName = _masterName;
}
}
}
puis décorez un contrôleur ou une action avec cet attribut personnalisé en spécifiant la disposition souhaitée:
[LayoutInjecter("_PublicLayout")]
public ActionResult Index()
{
return View();
}
Razor
vue donnée , définissez simplementLayout = null;