我有一个ASP.NET MVC4 WebAPI实现,其中有一个方法可以在注册时检查用户名是否可用。当用户离开用户名文本框时,将使用文本框中的值将ajax呼叫呼叫发布到服务器。
我已将此实现如下。
1)我将WebAPI路由代码设置为...
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
2)我要调用的web api动作写成......
[HttpPost]
public HttpResponseMessage IsUserNameAvailable(string id)
{
return Request.CreateResponse(HttpStatusCode.OK, (new UserManager()).IsUserNameAvailable(id));
}
3)我的jquery调用如下所示......
$.ajax({
url: '/api/PublicServicesApi/IsUserNameAvailable',
data: '{id:"testname"}',
contentType: 'application/json; charset=utf-8',
type: 'POST',
success: function (d) {
if (d == true)
//NAME IS AVAILABLE
else
//NAME IS NOT AVAILABLE
}
});
但是问题发生在服务器上
答案 0 :(得分:1)
您在网址中加入了操作名称,我认为您的路由应反映这一点。
routes.MapHttpRoute(
name: "ActionApi",
routeTemplate: "api/{controller}/{action}/{id}",
defaults: new { id = RouteParameter.Optional }
);
答案 1 :(得分:0)
将路线更改为:
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{action}"
);
然后将您的操作方法更改为:
[HttpPost]
public HttpResponseMessage IsUserNameAvailable(dynamic value)
{
string id = value.id;
return Request.CreateResponse(HttpStatusCode.OK, (new UserManager()).IsUserNameAvailable(id));
}