2012-02-14 32 views
8

tengo un método siguiente WCFCalling servicio WCF de jQuery Ajax usando el método 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; 
} 

Y tengo un código de cliente jQuery Ajax como a continuación

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

Una vez ajax invocar AddUser método loginid y nombre el valor se establece en los dos parámetros del método AddUser, sin embargo, Lo que quiero hacer es tener una firma de método como la siguiente

public User AddUser(User user) 

Por supuesto, la clase de usuario tiene propiedades LoginId y Name.

Cómo vincular el parámetro del cliente a la instancia del usuario automáticamente sin establecer el valor manualmente?

Respuesta

5

he encontrado la solución a solas

debería envolver los datos JSON con el nombre del objeto de la siguiente manera:

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