Ajax获取MVC5控制器的参数
我想知道为什么我的Ajax获取MVC5控制器的参数,ajax,asp.net-mvc,Ajax,Asp.net Mvc,我想知道为什么我的ajax调用我的Controller在调用我的参数id时有效,而在调用accountNo或accountId时无效 AJAX 控制器 在我的控制器中-如果参数为int-id,则一切正常 如果我将Controller参数更改为,比如说,accountNum,我会收到一个500错误,说明我的参数为null 因此,实际上,控制器参数的命名决定了我的GET请求是否成功。是因为它是JSON编码的,并且我没有在我的ajax方法中指定数据模型/格式吗 如果对此有答案,我很抱歉,因为我没有
ajax
调用我的Controller
在调用我的参数id
时有效,而在调用accountNo
或accountId
时无效
AJAX
控制器
在我的控制器中
-如果参数为int-id
,则一切正常
如果我将Controller
参数更改为,比如说,accountNum
,我会收到一个500错误,说明我的参数为null
因此,实际上,控制器参数的命名决定了我的GET
请求是否成功。是因为它是JSON编码的,并且我没有在我的ajax
方法中指定数据模型/格式吗
如果对此有答案,我很抱歉,因为我没有找到它。这是因为默认情况下
RouteConfig.cs
将路由的第三个组件定义为变量id
您可以通过指定URL访问该控制器
/DeferredAccount/GetDeferredAccountDetailsByAccount/?accountNum=1
使用属性路由
还有另一种更细粒度的方法可以使用MVC5为您的路由服务,称为属性路由
编辑RouteConfig.cs
添加
routes.mapmvcattributterroutes()代码>
编辑控制器
[Route("/whatever/path/i/like/{accountNum:int}")]
public JsonResult GetDeferredAccountDetailsByAccount(int accountNum)
{
[...]
}
这是因为默认情况下,RouteConfig.cs
将路由的第三个组件定义为变量id
您可以通过指定URL访问该控制器
/DeferredAccount/GetDeferredAccountDetailsByAccount/?accountNum=1
使用属性路由
还有另一种更细粒度的方法可以使用MVC5为您的路由服务,称为属性路由
编辑RouteConfig.cs
添加routes.mapmvcattributterroutes()代码>
编辑控制器
[Route("/whatever/path/i/like/{accountNum:int}")]
public JsonResult GetDeferredAccountDetailsByAccount(int accountNum)
{
[...]
}
您可以在RouteConfig.cs文件中将下面的Route放在上面
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "DeferredAccount", action = "GetDeferredAccountDetailsByAccount", id = UrlParameter.Optional }
);
您可以在RouteConfig.cs文件中将下面的路线放在顶部
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "DeferredAccount", action = "GetDeferredAccountDetailsByAccount", id = UrlParameter.Optional }
);
愚蠢的问题,但既然你在这里:我不需要在每个控制器方法上都使用Route Attr,是吗?RTM;)-“您还可以将属性路由与基于约定的路由相结合。”。谢谢-现在就知道了。谢谢你!愚蠢的问题,但既然你在这里:我不需要在每个控制器方法上都使用Route Attr,是吗?RTM;)-“您还可以将属性路由与基于约定的路由相结合。”。谢谢-现在就知道了。谢谢你!