asp.net mvc 3 - una - Obtenga el controlador actual a la vista
pasar una lista del controlador a la vista mvc (7)
Tengo una View - _Edit
que vive en News M/V/C
Reutilizo el V/M
través del CategoryController
como:
return PartialView("/Views/News/_Edit.cshtml", model);
¿Cómo desde dentro de View - _Edit
puedo alertar el nombre del controlador?
Cuando yo:
alert(''@ViewContext. RouteData.Values["controller"].ToString()'');
El valor es: News
Sin embargo, la URL es: /Category/foobar
¿Hay alguna forma de alertar el valor ''Category''
? Gracias
Cree la clase base para todos los controladores y ponga aquí el atributo de nombre:
public abstract class MyBaseController : Controller
{
public abstract string Name { get; }
}
En vista
@{
var controller = ViewContext.Controller as MyBaseController;
if (controller != null)
{
@controller.Name
}
}
Ejemplo de controlador
public class SampleController: MyBaseController
{
public override string Name { get { return "Sample"; }
}
He puesto esto en mi vista parcial:
@HttpContext.Current.Request.RequestContext.RouteData.Values["controller"].ToString()
en el mismo tipo de situación que describe, y muestra el controlador descrito en la URL (Categoría para usted, Producto para mí), en lugar de la ubicación real de la vista parcial.
Entonces usa esta alerta en su lugar:
alert(''@HttpContext.Current.Request.RequestContext.RouteData.Values["controller"].ToString()'');
Lo hago así, pero tal vez solo sea ASP.NET MVC 4
@ViewContext.RouteData.Values["controller"]
Otra forma de obtener el nombre del controlador actual en la vista
@ViewContext.Controller.ValueProvider.GetValue("controller").RawValue
Puede usar cualquiera de los siguientes códigos para obtener el nombre del controlador
@ HttpContext.Current.Request.RequestContext.RouteData.Values ["controller"]. ToString ();
Si está utilizando MVC 3 puede usar @ ViewContext.Controller.ValueProvider.GetValue ("controller"). RawValue
Solo usa:
ViewContext.Controller.GetType().Name
Esto te dará el nombre completo del controlador
Todavía está en el contexto de su CategoryController
a pesar de que está cargando un PartialView
desde su carpeta Views/News
.