使用POST方法从jQuery Ajax调用WCF服务

时间:2012-02-14 06:52:29

标签: wcf jquery

我有以下WCF方法

[OperationContract]
[WebInvoke(Method = "POST", UriTemplate = "UserService/AddUser", BodyStyle = WebMessageBodyStyle.WrappedRequest)]
public User AddUser(string LoginId, string Name)
{
    var user = input;

    // Some business logic here

    return user;
}

我有一个jQuery Ajax客户端代码,如下所示

<script type="text/javascript">
    $(document).ready(function () {

        $("#submit").click(function () {
            var input =
            {
                LoginId: $("#LoginId").val(),
                Name: $("#Name").val()
            };

            $.ajax({
                cache: false,
                type: "POST",
                async: false,
                url: "http://localhost:2000/UserService/AddUser",
                data: JSON.stringify(input),
                contentType: "application/json",
                dataType: "json",
                success: function (userViewModel) {
                    var user = userViewModel;
                    alert(user);
                }
            });
        });
    });
</script>

一旦ajax调用AddUser方法,LoginId和Name值在AddUser方法的两个参数中设置,但是,我想要做的是拥有如下方法签名

public User AddUser(User user)

当然,User类中包含LoginId和Name属性。

如何自动将客户端参数绑定到用户实例而不手动设置值?

1 个答案:

答案 0 :(得分:5)

我自己找到了解决方案

我应该用对象名称包装json数据,如下所示:

        var input =
        {
            "user": 
            {
                "LoginId": $("#LoginId").val(),
                "Name": $("#Name").val()
            }
        };