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

Ray*_*Ray 8 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;
}
Run Code Online (Sandbox Code Playgroud)

我有一个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>
Run Code Online (Sandbox Code Playgroud)

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

public User AddUser(User user)
Run Code Online (Sandbox Code Playgroud)

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

如何在不设置手动值的情况下自动将客户端参数绑定到用户实例?

Ray*_*Ray 5

我自己找到了解决方案

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

        var input =
        {
            "user": 
            {
                "LoginId": $("#LoginId").val(),
                "Name": $("#Name").val()
            }
        };
Run Code Online (Sandbox Code Playgroud)