Buscar..
Introducción
T4MVC es una plantilla T4 que genera ayudantes fuertemente tipados para usar en los mecanismos de enrutamiento MVC, a diferencia de las cadenas mágicas. T4MVC detectará los diversos controladores, acciones y vistas, y creará referencias a esas vistas, cometiendo errores en tiempo de compilación en el caso de que un intento de enrutar o acceder a una vista no sea válido.
Llamando a una acción
En MVC, hay algunos escenarios donde desea especificar una acción para propósitos de enrutamiento, ya sea para un enlace, una acción de formulario o una redirección a la acción. Puede especificar una acción a través del espacio de nombres MVC.
Cuando se le da un controlador, como HomeController
:
public class HomeController : Controller
{
public ActionResult Index()
{
...
}
public ActionResult MyAction()
{
...
}
public ActionResult MyActionWithParameter(int parameter)
{
...
}
}
T4MVC generará un controlador heredado que anula la acción. Esta anulación establecerá los datos de la ruta correctamente para que UrlHelper
de MVC genere la URL correcta. Puede llamar a este método y pasarlo a varios métodos para UrlHelper
. Los siguientes ejemplos suponen que se está utilizando la ruta MVC predeterminada:
Enlazar
Para generar una a
etiqueta con el texto especificado:
@Html.ActionLink("Link Text", MVC.Home.Index() )
//result: <a href="/">Link Text</a>
@Html.ActionLink("Link Text", MVC.Home.MyAction() )
//result: <a href="/Home/MyAction">Link Text</a>
//T4MVC also allows you to specify the parameter without creating an anonymous object:
@Html.ActionLink("Link Text", MVC.Home.MyActionWithParameter(1) )
//result: <a href="/Home/MyActionWithParameter/1">Link Text</a>
Para generar un url:
@Url.Action( MVC.Home.Index() )
//result: /
@Url.Action("Link Text", MVC.Home.MyAction() )
//result: /Home/MyAction
@Url.Action("Link Text", MVC.Home.MyActionWithParameter(1) )
//result: /Home/MyActionWithParameter/1
Tenga en cuenta que T4MVC sigue las mismas reglas que MVC Routing: no especificará las variables de ruta predeterminadas, por lo que la acción del Index
en el HomeController
no genera /Home/Index
sino la forma abreviada y perfectamente válida de /
.
Método de formulario
Para generar una etiqueta de form
con la action
correcta especificada:
@Html.BeginForm( MVC.Home.Index(), FormMethod.Get /* or FormMethod.Post */ )
{
//my form
}
//result:
<form action="/" method="GET">
//my form
</form>
@Html.BeginForm( MVC.Home.MyActionWithParameter(1), FormMethod.Get /* or FormMethod.Post */ )
{
//my form
}
//result:
<form action="/Home/MyActionWithParameter/1" method="GET">
//my form
</form>
Redirigir a la acción
Cuando esté en un controlador, es posible que desee redirigir a una acción de la acción actual. Esto se puede hacer, likeso:
public class RedirectingController : Controller
{
public ActionResult MyRedirectAction()
{
...
return RedirectToAction( MVC.Redirecting.ActionToRedirectTo() );
//redirects the user to the action below.
}
public ActionResult ActionToRedirectTo()
{
...
}
}