Szukaj…
Wprowadzenie
T4MVC to szablon T4, który generuje silnie typowane pomocniki do użycia w mechanizmach routingu MVC, w przeciwieństwie do magicznych ciągów. T4MVC wykryje różne kontrolery, akcje i widoki oraz utworzy odniesienia do tych widoków, popełniając błędy kompilacji w przypadku, gdy próba trasy lub dostępu do widoku jest nieważna.
Calling a Action
W MVC istnieje kilka scenariuszy, w których chcesz określić akcję dla celów routingu, albo dla łącza, akcji formularza lub przekierowania do akcji. Możesz określić akcję za pomocą przestrzeni nazw MVC.
Po podaniu kontrolera, takiego jak HomeController
:
public class HomeController : Controller
{
public ActionResult Index()
{
...
}
public ActionResult MyAction()
{
...
}
public ActionResult MyActionWithParameter(int parameter)
{
...
}
}
T4MVC wygeneruje odziedziczony kontroler, który zastąpi akcję. To zastąpienie ustawia poprawnie dane trasy, dzięki czemu MVC UrlHelper
wygeneruje odpowiedni UrlHelper
URL. Możesz wywołać tę metodę i przekazać ją do różnych metod UrlHelper
. W poniższych przykładach założono, że używana jest domyślna trasa MVC:
Połączyć
Aby wygenerować a
znacznika z określonym tekstem:
@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>
Aby wygenerować adres 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
Zauważ, że T4MVC stosuje te same zasady, co MVC Routing - nie określi domyślnych zmiennych trasy, tak że akcja Index
na HomeController
nie generuje /Home/Index
ale doskonale poprawną i skróconą formę /
.
Metoda formularza
Aby wygenerować tag form
z określoną poprawną 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>
Przekieruj do działania
Będąc w kontrolerze, możesz chcieć przekierować do akcji z bieżącej akcji. Można to zrobić, lubię:
public class RedirectingController : Controller
{
public ActionResult MyRedirectAction()
{
...
return RedirectToAction( MVC.Redirecting.ActionToRedirectTo() );
//redirects the user to the action below.
}
public ActionResult ActionToRedirectTo()
{
...
}
}