A propósito no mostramos una forma de obtener el nombre de área actual de una solicitud de MVC ya que "a rea "es simplemente un atributo de una ruta. No es confiable para otros usos. En particular, si desea que sus controladores tengan algún atributo (piense en el término abstracto, no en la clase System.Attribute) que puede usar el helper, entonces esos atributos se deben encontrar en los controladores, , no en el área.
Como ejemplo práctico, si quiere un poco de lógica (como un filtro de acción) para ejecutar antes que cualquier controlador en un área particular, debe asociar el filtro de acción con esos controladores directamente. La forma más sencilla de hacer esto es atribuir algo de MyAreaBaseController con ese filtro, y luego hacer que cada controlador que lógicamente desee asociar con esa área sea una subclase de ese tipo. Cualquier otro uso, como un filtro global que examine RouteData.DataTokens ["área"] para tomar una decisión, no es compatible y es potencialmente peligroso.
Si realmente necesita obtener el nombre del área actual, puede usar RouteData.DataTokens["area"]
para encontrarlo.
Hola Levi que fue una gran respuesta, gracias. –
Es genial escuchar al equipo de .NET al respecto. ¿Su respuesta se aplica cuando está dentro de una vista? Tengo una vista compartida que se usa en diferentes áreas, y me gustaría cambiar su apariencia en función de dónde se encuentre el usuario en el sitio. Podría usar una vista parcial, pero luego la vista principal estaría casi vacía. Poner algo en el ViewBag parece incorrecto porque es estrictamente lógica de presentación. –