私はインデックスメソッドをオーバーロードしようとしています。ここでc#mvc 3、アクションオーバーロード?
は私のインデックスメソッドです:
[ActionName("Index")]
public ActionResult IndexDefault()
{
}
[ActionName("Index")]
public ActionResult IndexWithEvent(string eventName)
{
}
[ActionName("Index")]
public ActionResult IndexWithEventAndLanguage(string eventName, string language)
{
}
これはキャストを保つ: システム:
コントローラタイプのアクション「インデックス」の現在のリクエスト「をCoreController」は、次のアクションメソッドの間であいまいです。 System.Web.Mvc.ActionResult System.Web.Mvc.ActionResult System.Web.Mvc.ActionResult(ManageMvc.Controllers.CoreController型のIndexWithEvent(System.String)システム。文字列)を入力ManageMvc.Controllers.CoreController
3つの異なるGETメソッドでインデックスアクションをオーバーロードすることはできませんか?
また、可能であれば、正しいルートは何ですか?
はlocalhost /コア/インデックス
はlocalhost/EVENT_NAME /コア/インデックス
はlocalhost/EVENT_NAME /言語/コア/インデックス:
routes.MapRoute(
"IndexRoute", // Route name
"{eventName}/{language}/Core/{action}", // URL with parameters
new { controller = "Core", action = "Index", eventName = UrlParameter.Optional, language = UrlParameter.Optional }
);
URLは次のようになります。私はこれを持っています
なぜこのオーバーロードは機能しませんか? – Patrick
@Patrick - ASP.NET MVCでは、経路を定義した方法に基づいてどのオーバーロードを使用するかを決めることができないため、URLで渡されるパラメータに基づいてさまざまなオーバーロードを呼び出すほどスマートではありません。 –
ああ、ありがとう。私はそれをあなたが提案した方法に変え、それが働いています。 – Patrick