Ajax GET参数到MVC 5控制器

Mar*_* C. 0 ajax asp.net-mvc

我不知道为什么我ajax呼吁我的Controller作品时,我的参数是所谓的id,当它被称为不工作accountNoaccountId.

阿贾克斯

 $.ajax({
             type: "GET",
             dataType: "json",
             cache: false,
             url: config.url.root + "/DeferredAccount/GetDeferredAccountDetailsByAccount/" + accountNo
                });
Run Code Online (Sandbox Code Playgroud)

调节器

 public JsonResult GetDeferredAccountDetailsByAccount(int id)
        {
            var details = _deferredAccountDetailsService.GetDeferredAccountDetailsByAccount(id);

            return Json(details, JsonRequestBehavior.AllowGet);
        }
Run Code Online (Sandbox Code Playgroud)

在我Controller- 如果参数是int id一切正常.

在此输入图像描述

如果我将Controller参数更改为,让我们说accountNum,我收到500错误,说明我的参数是null.

在此输入图像描述

因此,它实际上只是控制器参数的命名,它决定了我的GET请求是否成功.是因为它是JSON编码的,我没有在我的ajax方法中指定数据模型/格式?

如果答案存在,我道歉,因为我没有遇到过它.

Dan*_*Dan 5

这是因为RouteConfig.cs默认情况下将路径的第三个组件定义为变量id.

您可以通过指定URL来访问该控制器

/DeferredAccount/GetDeferredAccountDetailsByAccount/?accountNum=1

使用属性路由

使用称为属性路由的MVC 5提供另一种更精细的路由方式.

编辑RouteConfig.cs
添加routes.MapMvcAttributeRoutes();

编辑控制器

[Route("/whatever/path/i/like/{accountNum:int}")]
public JsonResult GetDeferredAccountDetailsByAccount(int accountNum)
{
    [...]
}
Run Code Online (Sandbox Code Playgroud)

MSDN:ASP.NET MVC 5中的属性路由