Recherche…


Introduction

T4MVC est un modèle T4 qui génère des helpers fortement typés à utiliser dans les mécanismes de routage MVC, par opposition aux chaînes magiques. T4MVC détectera les différents contrôleurs, actions et vues, et créera des références à ces vues, générant des erreurs de compilation au cas où une tentative de routage ou d'accès à une vue n'est pas valide.

Appel d'une action

Dans MVC, vous devez spécifier une action à des fins de routage, que ce soit pour un lien, une action de formulaire ou une redirection vers une action. Vous pouvez spécifier une action via l'espace de noms MVC.

Lorsqu'il est donné un contrôleur, tel que HomeController :

public class HomeController : Controller
{
    public ActionResult Index()
    {
        ...
    }
    public ActionResult MyAction()
    {
        ...
    }
    public ActionResult MyActionWithParameter(int parameter)
    {
        ...
    }
}

T4MVC générera un contrôleur hérité qui remplace l'action. Cette substitution définira correctement les données de route afin que UrlHelper de MVC génère l'URL appropriée. Vous pouvez appeler cette méthode et la transmettre aux différentes méthodes pour UrlHelper . Les exemples ci-dessous supposent que l’itinéraire MVC par défaut est utilisé:

Lien

Pour générer une a étiquette avec le texte spécifié:

@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>

Pour générer une 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

Notez que T4MVC suit les mêmes règles que MVC Routing - il ne spécifie pas les variables de route par défaut, de sorte que l'action Index sur le HomeController ne génère pas /Home/Index mais plutôt la forme parfaitement valide et abrégée de / .

Méthode de formulaire

Pour générer une balise de form avec l' action correcte spécifiée:

@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>

Redirect to Action

Dans un contrôleur, vous pouvez vouloir rediriger vers une action de l'action en cours. Cela peut être fait, comme par exemple:

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
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow