2010-08-30 60 views
1

我已经想要将数据插入数据库而无需回发的场景。大约有12到13个字段需要插入。我从实际上是Json对象的客户端传递DTO。现在,我面临的问题是如何将我在webservice中获得的Json对象转换为“类”(在我的例子中,类名是User)对象。如何将Json对象转换为web服务中的cutom类对象?

<script type="text/javascript" language="javascript"> 

    $('#<%= btnSaveInfo.ClientID %>').click(function() 
    { 
     // Initialize the object, before adding data to it. 
     // { } is declarative shorthand for new Object(). 
     var User = { }; 
     User.FirstName = $('#<%= txtFirstName.ClientID%>').val(); 
     User.MiddleName = $('#<%= txtMiddleName.ClientID%>').val(); 
     User.LastName = $('#<%=txtLastName.ClientID %>').val(); 
     User.Gender = $('table#<%= rdbGenderType.ClientID %> input:radio:checked').val(); 
     User.DateCreated = Date.UTC(); 
     User.Description = $('#<%= txtDescription.ClientID%>').val(); 
     User.DOB = $('#<%= txtDOB.ClientID %>').val(); 
     User.Location=$('#<%= txtLocation.ClientID %>').val(); 
     var DTO = {'User' : User}; 
     var path = 'MyWebService.asmx/AddNewUser'; 
     $.ajax 
     ({ 
      type: "POST", 
      url: path,    
      contentType: "application/json; charset=utf-8", 
      dataType: "json", 
      data: JSON.stringify(DTO), 
      async:false, 
      success: function(msg) 
      {      

      } 
     }); 
    }); 

,你可以看到我传递的数据作为数据:JSON.stringify(DTO),。现在我该如何将这个JSon对象转换成

[WebMethod] 
    [System.Web.Script.Services.ScriptMethod(ResponseFormat = System.Web.Script.Services.ResponseFormat.Json)] 
    public bool AddNewUser(Object User) 
    { 
     return UserRepository.AddNewUser(User); 
    } 

在上面的例子中,AddNewUser方法接受User类的对象。但我收到铸造错误。那么如何将Json对象转换为“User”类对象呢?

回答

2

为什么不能修改AddNewUser方法来接受所需的类型。例如,

public bool AddNewUser(User user) 

应该日志中用户类型的工作已经从默认Java的脚本中使用公共构造和属性名称是相同类型的属性名称。

0

您的网络服务应该接受User对象,而不是Object err对象。 =)

public bool AddNewUser(User user) 

不言而喻,您的JSON对象需要与您的CLR对象的属性相匹配。 (string to string,bool to bool等)。

这就是为什么试图将JSON“强制”到业务对象中的原因。使用DataContracts将JSON映射到DataContract对象,然后将其映射到业务对象。比试图从JSON直接到业务对象更安全。

给一个去。

1

定义您User类是这样的:

public class User 
{ 
    public User() { } 

    public string FirstName { get; set; } 
    public string MiddleName { get; set; } 
    public string LastName { get; set; } 
    public bool Gender { get; set; } 

    public DateTime DateCreated { get; set; } 

    public string Description { get; set; } 
    public string DOB { get; set; } 
    public string Location { get; set; } 

} 

和编辑Web服务的签名......

[WebMethod] 
[System.Web.Script.Services.ScriptMethod(ResponseFormat = System.Web.Script.Services.ResponseFormat.Json)] 
public bool AddNewUser(User user) 
{