Suche…
Einführung
T4MVC ist eine T4-Vorlage , die stark typisierte Helfer für die Verwendung in MVC-Routing-Mechanismen im Gegensatz zu magischen Zeichenfolgen generiert. T4MVC erkennt die verschiedenen Controller, Aktionen und Ansichten und erstellt Verweise auf diese Ansichten. Dadurch werden Fehler bei der Kompilierung verursacht, wenn ein Versuch, eine Ansicht zu routen oder auf eine Ansicht zuzugreifen, ungültig ist.
Eine Aktion aufrufen
In MVC gibt es einige Szenarien, in denen Sie eine Aktion für das Routing angeben möchten, entweder für eine Verknüpfung, eine Formularaktion oder eine Weiterleitung an eine Aktion. Sie können eine Aktion über den MVC-Namespace angeben.
Wenn ein Controller wie HomeController
:
public class HomeController : Controller
{
public ActionResult Index()
{
...
}
public ActionResult MyAction()
{
...
}
public ActionResult MyActionWithParameter(int parameter)
{
...
}
}
T4MVC generiert einen geerbten Controller, der die Aktion überschreibt. Durch diese Überschreibung werden die UrlHelper
korrekt festgelegt, sodass der UrlHelper
MVC die richtige UrlHelper
generiert. Sie können diese Methode aufrufen und an die verschiedenen Methoden von UrlHelper
. In den folgenden Beispielen wird davon ausgegangen, dass die Standard-MVC-Route verwendet wird:
Verknüpfung
Ein generieren a
Tag mit dem angegebenen Text:
@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>
So generieren Sie eine 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
Beachten Sie, dass T4MVC die gleichen Regeln wie MVC Routing folgt - es wird nicht Standardroute Variablen angeben, so dass der Index
Aktion auf dem HomeController
nicht generieren /Home/Index
, sondern die absolut gültige und abgekürzte Form von /
.
Formularmethode
So generieren Sie ein form
Tag mit der angegebenen korrekten action
:
@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>
Umleiten zur Aktion
Wenn Sie sich in einem Controller befinden, möchten Sie möglicherweise von der aktuellen Aktion zu einer Aktion umleiten. Das kann gemacht werden, wie auch:
public class RedirectingController : Controller
{
public ActionResult MyRedirectAction()
{
...
return RedirectToAction( MVC.Redirecting.ActionToRedirectTo() );
//redirects the user to the action below.
}
public ActionResult ActionToRedirectTo()
{
...
}
}