サーチ…
前書き
T4MVCは、マジック文字列ではなく、MVCルーティングメカニズムで使用するための強力な型付けヘルパーを生成するT4テンプレートです。 T4MVCは、さまざまなコントローラ、アクション、ビューを検出し、それらのビューへの参照を作成し、ビューのルーティングまたはアクセスが無効な場合にコンパイル時エラーを生成します。
アクションを呼び出す
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を生成するには:
@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と同じ規則に従うことに注意してください。デフォルトのルート変数は指定されないため、 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()
{
...
}
}