Dans Razor, lors du chargement d'une vue partielle, il est possible de spécifier simplement le nom de la vue partielle, et le moteur de visualisation de rasoir recherchera le RazorviewEngine.PartialviewLocalisation:
@Layout = "MyLayout";
3 Réponses :
J'ai essayé quelques choses différentes et je n'ai pas trouvé de moyen de faire ce que tu voulais. Cependant, vous pouvez simplement laisser la mise en page en blanc et utiliser le fichier _viewstart.cshtml pour affecter la mise en page de chaque page à l'aide d'une propriété ViewBag est quelque chose.
Donc, si vous aviez une énumération (par exemple) et vous définissez la propriété Dynamic ViewBag de CustomLayout à une valeur de cet Enum, vous pouvez utiliser le fichier _viewstart pour faire quelque chose comme ceci. p> Pas sûr si cela aide ou non. P> p>
Récemment, je me suis battu sur un problème similaire dans lequel, dans une application thématique qui utilise une viewEngine personnalisée pour rechercher l'emplacement de thème d'abord pour des vues, j'essayais de remplacer certains fichiers maîtres. Une façon de forcer l'emplacement de la mise en page à parcourir la visualisation de la vue Viewengine consiste à spécifier le nom de la vue Master dans une action du contrôleur lors de son retour: Cependant, si "MyViewMaster" a également Une mise en page (mises en page imbriquées), cette méthode ne fonctionne pas pour la disposition imbriquée. Ma meilleure solution jusqu'à présent est d'appeler le moteur de vue directement dans la vue: p> Ceci fonctionne mais pourrait certainement être encapsulé dans une méthode d'extension pour éviter la répétition et l'abstrait du code. P> espérons que cela aide! p> p>
Merci, cela a travaillé pour moi. Bien que cela a été une année, quelqu'un a-t-il trouvé une meilleure solution qui me permettrait de dire juste layout = "Main2Col.CSHMTL" au lieu d'avoir besoin de cette ligne de code?
Créez votre propre classement WebViewPage
J'ai pris la réponse acceptée de @ Sowee15 et j'ai ajouté une méthode d'extension pour aider à terminer un bit: puis vous pouvez appeler une extension de votre vue ou de votre visionnement. p>