0

私はこのコントローラーを持っています:

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 呼び出しの関係がわかりません。これには本当に助けが必要です。ありがとう。

4

1 に答える 1

1

IDを期待しています。次のいずれかを試してください。

url: '@Url.Action("GetStage", "Standings", new { id = 1 })',

...またはこれ:

routes.MapRoute(null, "Standings/{id}", 
    new { controller = "Standings", action = "Index" }
    new { id = UrlParameter.Optional, });
于 2012-06-23T21:46:07.450 に答える