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