2012-02-14 4 views
8

У меня есть следующий метод WCFВызов службы WCF из JQuery Ajax с использованием метода 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; 
} 

И у меня есть клиентский код 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> 

Once АЯКС ссылаться AddUser метод LoginID и Имя значение установлено в двух параметрах метода AddUser. Тем не менее, я хочу, чтобы у меня была подпись метода ниже:

public User AddUser(User user) 

Конечно, в пользовательском классе есть свойства LoginId и Name.

Как связать параметр клиента с пользовательским экземпляром автоматически, не устанавливая значение вручную?

ответ

5

Я нашел решение самого

я должен обернуть данные JSON с именем объекта следующим образом:

 var input = 
     { 
      "user": 
      { 
       "LoginId": $("#LoginId").val(), 
       "Name": $("#Name").val() 
      } 
     }; 
Смежные вопросы