Sök…
Introduktion
T4MVC är en T4-mall som genererar starkt typade hjälpare för användning i MVC-routingmekanismer, i motsats till magiska strängar. T4MVC kommer att upptäcka de olika styrenheterna, åtgärderna och vyerna och skapa referenser till dessa vyer, vilket gör kompileringstidsfel i händelse av att ett försök att rutta eller komma åt en vy är ogiltigt.
Att ringa en åtgärd
I MVC finns det några scenerier där du vill ange en åtgärd för routningsändamål, antingen för en länk, formåtgärd eller en omdirigering till handling. Du kan ange en åtgärd via MVC-namnområdet.
När du får en kontroller, till exempel HomeController
:
public class HomeController : Controller
{
public ActionResult Index()
{
...
}
public ActionResult MyAction()
{
...
}
public ActionResult MyActionWithParameter(int parameter)
{
...
}
}
T4MVC genererar en ärvd kontroller som åsidosätter åtgärden. Denna åsidosättning ställer in ruttdata korrekt så att MVC: s UrlHelper
kommer att generera rätt URL. Du kan kalla den här metoden och skicka den till de olika metoderna för UrlHelper
. Exemplen nedan antar att MVC-standardvägen används:
Länk
Så här genererar du a
tagg med den angivna texten:
@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>
Så här genererar du en 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
Lägg märke till att T4MVC följer samma regler som MVC Routing - det kommer inte att ange standardrutt variabler så att Index
åtgärder på HomeController
inte genererar /Home/Index
utan i stället helt giltiga och förkortad form av /
.
Form Metod
För att generera en form
tag med rätt action
som anges nedan:
@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>
Omdirigera till handling
När du är i en controller kan du kanske omdirigera till en åtgärd från den aktuella åtgärden. Detta kan göras, likeso:
public class RedirectingController : Controller
{
public ActionResult MyRedirectAction()
{
...
return RedirectToAction( MVC.Redirecting.ActionToRedirectTo() );
//redirects the user to the action below.
}
public ActionResult ActionToRedirectTo()
{
...
}
}