呼叫一個 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()
    {
        ...
    }
}