2012-02-14 35 views
8

Tôi có một phương pháp WCF sauGọi dịch vụ WCF từ jQuery Ajax sử dụng phương thức POST

[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; 
} 

Và tôi có một mã số khách hàng jQuery Ajax như sau

<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> 

Khi ajax gọi adduser phương pháp loginId và Tên giá trị được đặt trong tham số hai phương thức của AddUser, tuy nhiên, Điều tôi muốn làm là có chữ ký phương thức như sau

public User AddUser(User user) 

Tất nhiên, lớp người dùng có các thuộc tính LoginId và Name trong đó.

Làm cách nào để tự động ràng buộc tham số của khách hàng thành cá thể người dùng mà không đặt giá trị theo cách thủ công?

Trả lời

5

Tôi tìm thấy giải pháp của bản thân mình

tôi nên quấn dữ liệu json với tên đối tượng như sau:

 var input = 
     { 
      "user": 
      { 
       "LoginId": $("#LoginId").val(), 
       "Name": $("#Name").val() 
      } 
     }; 
Các vấn đề liên quan