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()
    {
        ...
    }
}


Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow