una schick rastrillo partes para navaja maquina hoja historia gillette electrica cuchillas antiguas afeitar c# asp.net-mvc razor asp.net-mvc-5

c# - schick - Obtener el nombre del controlador de la maquinilla de afeitar



partes de una maquina de afeitar electrica (6)

Parece que estoy teniendo dificultades para conseguir algo que debería ser fácil. Desde mi punto de vista, usando Razor, me gustaría obtener el nombre del controlador actual. Por ejemplo, si estoy aquí:

http://www.example.com/MyController/Index

¿Cómo puedo obtener el nombre del controlador, MyController de una expresión de Razor:

@* Obviously this next line doesn''t work @Controller.Name *@

Soy nuevo en MVC, así que si esta es una respuesta obvia, no me atajes mal.


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


Además, si desea obtener el nombre completo del controlador (con el término "Controlador") puede usar:

ViewContext.Controller.GetType().Name


Para eliminar la necesidad de ToString() use

@ViewContext.RouteData.GetRequiredString("controller")


Una adición a la respuesta de Koti Panga: los dos ejemplos que proporcionó no son equivalentes.

var controllerName = this.ViewContext.RouteData.Values["controller"].ToString();

Esto devolverá el nombre del controlador que maneja la vista donde se ejecuta este código, mientras que

var controllerName = HttpContext.Current.Request.RequestContext.RouteData.Values["controller"].ToString();

Esto devolverá el nombre del controlador solicitado en la URL.

Si bien estos serán los mismos en la mayoría de los casos, hay algunos casos en los que podría estar dentro de una vista parcial que pertenece a un controlador diferente y desea obtener el nombre del controlador "más arriba" en la cadena, en cuyo caso el Se requiere un segundo método.

(Disculpas por publicar esto como una respuesta por separado; aún no tengo la reputación de comentar sobre él).


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

MVC 3

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

MVC 4.5

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


@{ var controllerName = this.ViewContext.RouteData.Values["controller"].ToString(); }

O

@{ var controllerName = HttpContext.Current.Request.RequestContext.RouteData.Values["controller"].ToString(); }