ここで何か不足している可能性がありますが、ASP.NET MVC 4 では、次の操作を実行できません。
次のコントローラがあるとします。
public class HomeController : Controller
{
public ActionResult Index()
{
return View();
}
[HttpPost]
public ActionResult Index(string order1, string order2)
{
return null;
}
}
そしてそれはビューです:
@{
ViewBag.Title = "Home";
}
@using (Html.BeginForm())
{
@Html.TextBox("order1")<br />
@Html.TextBox("order2")
<input type="submit" value="Save"/>
}
アプリを起動すると、私が得るのはこれだけです:
コントローラー タイプ 'HomeController' のアクション 'Index' に対する現在の要求は、次のアクション メソッド間であいまいです: タイプ ViewData.Controllers.HomeController の System.Web.Mvc.ActionResult Index() System.Web.Mvc.ActionResult Index(System. String、System.String) 型の ViewData.Controllers.HomeController
さて、ASP.NET MVC 3 では上記が正常に動作するので、試してみましたが、ASP.NET MVC 4 で何が変更されてこれが壊れたのでしょうか?
OK、ここで何かばかげたことをしていて、それに気付いていない可能性があります。
編集:
MVC 4 アプリでは、Global.asax.cs ファイルに次のものが含まれていないことに気付きました。
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);
}
MVC 3 アプリはデフォルトでこれを行います。そのため、上記を MVC 4 アプリに追加しましたが、同じエラーで失敗します。MVC 3 アプリは上記のルートで正常に動作することに注意してください。Request.Form を介して「注文」データを渡しています。
編集:RouteConfig.cs
私が見ることができるファイルRegisterRoutes
では、次のデフォルトルートで実行されます:
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional });
Index()
どのメソッドを呼び出すかのあいまいさに関して、元のエラーがまだ発生します。