130 votes

Obtenir le contrôleur actuel en vue

J'ai un View - _Edit qui vit en News M/V/C .

Je réutilise les V/M via les CategoryController comme:

 return PartialView("/Views/News/_Edit.cshtml", model);
 

Comment puis-je alerter le nom du contrôleur dans les View - _Edit ?

Quand je:

 alert('@ViewContext. RouteData.Values["controller"].ToString()');
 

La valeur est: News Cependant, l'URL est: /Category/foobar

Est-il possible d’obtenir la valeur 'Category' pour alerter? Merci

195voto

Nicholas Sizer Points 965

J'ai mis ceci dans ma vue partielle:

 @HttpContext.Current.Request.RequestContext.RouteData.Values["controller"].ToString()
 

Dans le même genre de situation que vous décrivez, et il montre le contrôleur décrit dans l'URL (Catégorie pour vous, Produit pour moi), au lieu de l'emplacement réel de la vue partielle.

Alors utilisez plutôt cette alerte:

 alert('@HttpContext.Current.Request.RequestContext.RouteData.Values["controller"].ToString()');
 

121voto

Palpie Points 884

Je le fais comme ça, mais c'est peut-être seulement ASP.NET MVC 4

 @ViewContext.RouteData.Values["controller"]
 

21voto

Sel Points 71

Créer une classe de base pour tous les contrôleurs et mettre ici l'attribut name:

 public abstract class MyBaseController : Controller
{
    public abstract string Name { get; }
}
 

En vue

 @{
    var controller = ViewContext.Controller as MyBaseController;
    if (controller != null)
    {
       Write(controller.Name)
    }
}
 

13voto

Vladimir Savinov Points 111

Autre moyen d'obtenir le nom actuel du contrôleur dans la vue

 @ViewContext.Controller.ValueProvider.GetValue("controller").RawValue
 

2voto

hunter Points 33850

Vous êtes toujours dans le contexte de votre CategoryController même si vous chargez un PartialView de votre dossier Views/News .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X