web api控制器动作方法

时间:2015-10-04 00:02:48

标签: asp.net-web-api

我正在尝试使用web api调用:我想提交一个电子邮件地址,然后在服务器上,该方法将验证并返回null或消息。

这就是我的尝试:

    [Post]
    public string validate(string email) {
        return this._contextProvider.ValidateEmail(email);
    }

但是,我将此消息返回给客户端:未找到与请求URI“https://localhost:44300/breeze/data/validate

匹配的HTTP资源

有效负载如下所示:{email:“Greg@gmail.com”}

1 个答案:

答案 0 :(得分:2)

事实证明,问题是参数绑定。

在Web API中,绑定的处理方式与MVC不同。默认情况下,从URI中提取简单类型,而不是正文。复杂类型是从消息正文中提取的。

然后我将[FromBody]属性添加到Action方法,然后找到了action方法。但是,唉,email参数为null。

public string validate([FromBody]string email) {
        return this._contextProvider.ValidateEmail(email);
    }

当使用这个技巧时,身体不能是json,而是构造为querystring - email=greg@gmail.com。我不想这样做,所以最后创建了一个接受参数的类,并且按预期工作。

public class ParameterizedAction {
    public string Parameter { get; set; }
}

 public string validate(ParameterizedAction arg) {
        return this._contextProvider.ValidateEmail(arg.Parameter);
 }

本文有更多信息:http://www.asp.net/web-api/overview/web-api-routing-and-actions/routing-and-action-selection

以及这一个:http://encosia.com/using-jquery-to-post-frombody-parameters-to-web-api/