私はこのコントローラーを持っています:
public class StandingsController : Controller
{
public ViewResult Index(int id)
{
}
[HttpPost]
public JsonResult GetStage(int stage, int leagueid)
{
}
}
Ajax 呼び出し:
$.ajax({
url: '@Url.Action("GetStage", "Standings")',
type: 'POST',
data: { stage: currentStage, leagueid:leagueid },
success: function (data) {
.............
ページの読み込み後に ajax リクエストを行います。必要なのは、URL を から に変更するhttp://localhost/MyApp/Standings/Index/3
ことだけhttp://localhost/MyApp/Standings/3
です。次のようにカスタムルートを追加しました。
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.RouteExistingFiles = false;
routes.MapRoute(null, "Standings/{id}", new { controller = "Standings", action = "Index" });
routes.MapRoute("Default", "{controller}/{action}/{id}", new { controller = "Home", action = "Index", id = UrlParameter.Optional });
しかし、今は ajax 呼び出しを行うときに例外が発生します:
The parameters dictionary contains a null entry for parameter 'id' of non-nullable type 'System.Int32' for method 'System.Web.Mvc.ViewResult Index(Int32)' in 'MyApp.Controllers.StandingsController'. An optional parameter must be a reference type, a nullable type, or be declared as an optional parameter.
ViewResult からのその id パラメータとの ajax 呼び出しの関係がわかりません。これには本当に助けが必要です。ありがとう。