调用一个 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()
{
...
}
}