1

我有一个 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
        }
    });

但是问题发生在服务器上

4

2 回答 2

1

您在 URL 中包含操作名称,我认为您的路由应该反映这一点。

routes.MapHttpRoute(
   name: "ActionApi",
   routeTemplate: "api/{controller}/{action}/{id}",
   defaults: new { id = RouteParameter.Optional }
);
于 2013-03-13T09:57:48.053 回答
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));
    }
于 2013-03-13T11:22:13.027 回答