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


Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow