Поиск…


Вступление

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


Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow