调用一个 Action

在 MVC 中,有一些场景,你要为路由指定一个操作,无论是链接,表单操作还是重定向到操作。你可以通过 MVC 命名空间指定操作。

给定控制器时,例如 HomeController

public class HomeController : Controller
{
    public ActionResult Index()
    {
        ...
    }
    public ActionResult MyAction()
    {
        ...
    }
    public ActionResult MyActionWithParameter(int parameter)
    {
        ...
    }
}

T4MVC 将生成一个覆盖该操作的继承控制器。此覆盖将正确设置路由数据,以便 MVC 的 UrlHelper 将生成正确的 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.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 路由相同的规则 - 它不会指定默认路由变量,因此 HomeController 上的 Index 操作不会生成/Home/Index,而是/的完全有效和缩写形式。

表格方法

要使用指定的正确 action 生成 form 标记:

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