Ottenere il nome del controller dal razor

Mi sembra di avere difficoltà a ottenere qualcosa che dovrebbe essere facile. Dal mio punto di vista, usando Razor, mi piacerebbe ottenere il nome dell’attuale controller. Ad esempio, se sono qui:

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

Come posso ottenere il nome del controller, MyController da un’espressione Razor:

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

Sono nuovo di MVC, quindi se questa è una risposta ovvia, non attaccarmi a male.

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

O

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

Un addendum alla risposta di Koti Panga: i due esempi che ha fornito non sono equivalenti.

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

Ciò restituirà il nome del controller che gestisce la vista in cui viene eseguito questo codice, mentre

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

Ciò restituirà il nome del controller richiesto nell’URL.

Anche se nella maggior parte dei casi saranno uguali, ci sono alcuni casi in cui si potrebbe essere all’interno di una vista parziale appartenente a un controller diverso e si desidera ottenere il nome del controller “più in alto” nella catena, nel qual caso il è necessario il secondo metodo.

(Mi scuso per aver postato questo come una risposta separata, non ho ancora la reputazione di commentare la sua.)

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

MVC 3

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

MVC 4.5

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

Per rimuovere la necessità di utilizzare ToString()

 @ViewContext.RouteData.GetRequiredString("controller") 

Inoltre, se si desidera ottenere il nome completo del controller (con il termine “Controller”) è ansible utilizzare:

 ViewContext.Controller.GetType().Name 

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