Поиск…
Вступление
T4MVC - это шаблон T4, который генерирует сильно типизированные помощники для использования в механизмах маршрутизации MVC, в отличие от магических строк. T4MVC будет определять различные контроллеры, действия и представления и создавать ссылки на эти представления, делая ошибки времени компиляции в случае, если попытка маршрутизации или доступа к представлению недействительна.
Вызов действия
В MVC есть некоторые сценарии, в которых вы хотите указать действие для целей маршрутизации, будь то ссылка, действие формы или перенаправление на действие. Вы можете указать действие через пространство имен MVC.
Когда задан контроллер, например HomeController
:
public class HomeController : Controller
{
public ActionResult Index()
{
...
}
public ActionResult MyAction()
{
...
}
public ActionResult MyActionWithParameter(int parameter)
{
...
}
}
T4MVC будет генерировать унаследованный контроллер, который переопределяет действие. Это переопределение задает данные маршрута должным образом, чтобы UrlHelper
MVC создавал правильный Url. Вы можете вызвать этот метод и передать его в различные методы для UrlHelper
. В приведенных ниже примерах предполагается, что используется маршрут MVC по умолчанию:
Ссылка на сайт
Для того, чтобы генерировать тег с указанным текстом: a
@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>
Чтобы создать 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
Обратите внимание, что T4MVC следует тем же правилам, что и MVC Routing - он не будет указывать переменные маршрута по умолчанию, так что действие Index
на HomeController
не генерирует /Home/Index
а вместо этого является абсолютно допустимой и сокращенной формой /
.
Метод формы
Чтобы создать тег form
с указанным правильным 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>
Перенаправление на действия
Когда в контроллере вы можете перенаправить действие из текущего действия. Это можно сделать, любит:
public class RedirectingController : Controller
{
public ActionResult MyRedirectAction()
{
...
return RedirectToAction( MVC.Redirecting.ActionToRedirectTo() );
//redirects the user to the action below.
}
public ActionResult ActionToRedirectTo()
{
...
}
}