Ricerca…


introduzione

T4MVC è un modello T4 che genera helper fortemente tipizzati per l'utilizzo nei meccanismi MVC Routing, al contrario delle stringhe magiche. T4MVC rileva i vari controller, azioni e viste e crea riferimenti a tali viste, rendendo errori in fase di compilazione nel caso in cui un tentativo di instradare o accedere a una vista non sia valido.

Chiamare un'azione

In MVC, ci sono alcuni scenari in cui si desidera specificare un'azione per scopi di routing, per un collegamento, un'azione modulo o un reindirizzamento all'azione. È possibile specificare un'azione tramite lo spazio dei nomi MVC.

Quando viene fornito un controller, come HomeController :

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

T4MVC genererà un controller ereditato che sovrascrive l'azione. Questa sovrascrittura imposterà correttamente i dati del percorso in modo che UrlHelper di MVC generi l'Url corretto. Puoi chiamare questo metodo e passarlo nei vari metodi per UrlHelper . Gli esempi seguenti presuppongono che venga utilizzata la route MVC predefinita:

collegamento

Per generare un a tag con il testo specificato:

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

Per generare 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

Si noti che T4MVC segue le stesse regole di MVC Routing - non specificherà le variabili di instradamento predefinite, in modo che l'azione Index sul HomeController non generi /Home/Index ma invece la forma perfettamente valida e abbreviata di / .

Metodo di forma

Per generare un tag form con l' action corretta specificata:

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

Reindirizza all'azione

In un controller, potresti voler reindirizzare a un'azione dall'azione corrente. Questo può essere fatto, mi piace:

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
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow