Nous avons délibérément pas exposé un moyen d'obtenir le nom de zone actuel à partir d'une demande MVC depuis "un rea "est simplement un attribut d'un itinéraire. Ce n'est pas fiable pour d'autres utilisations. En particulier, si vous voulez que vos contrôleurs aient un attribut (pensez au terme abstrait, pas à la classe System.Attribute) qui peut être utilisé par l'assistant, alors ces attributs doivent être trouvés sur les contrôleurs eux-mêmes, pas sur la zone.
Par exemple, si vous voulez exécuter une logique (comme un filtre d'action) avant tout contrôleur dans une zone particulière, doit associer directement le filtre d'action à ces contrôleurs. La façon la plus simple d'y parvenir est d'attribuer MyAreaBaseController à ce filtre, puis d'avoir chaque contrôleur que vous voulez logiquement associer à cette zone pour sous-classer ce type. Toute autre utilisation, telle qu'un filtre global qui examine RouteData.DataTokens ["area"] pour prendre une décision, n'est pas prise en charge et potentiellement dangereuse.
Si vous avez vraiment besoin du nom de zone actuel, vous pouvez utiliser RouteData.DataTokens["area"]
pour le trouver.
Salut Levi c'était une bonne réponse merci. –
C'est génial d'avoir des nouvelles de l'équipe .NET à ce sujet. Est-ce que votre réponse s'applique à l'intérieur d'une vue? J'ai une vue partagée qui est utilisée dans différents domaines, et je voudrais changer son apparence en fonction de l'emplacement de l'utilisateur sur le site. Je pourrais utiliser une vue partielle, mais la vue principale serait presque vide. Mettre quelque chose dans le ViewBag semble faux, car c'est strictement une logique de présentation. –