2016-03-02 58 views
0

我正在開發一個通用的Windows 10應用程序。我用的WebAPI的工作和我試圖讓使用我的課的JSON序列化後調用, 的代碼如下:正在從文本框的拍攝在UI的東西JSON中的序列化返回空值

public async void PostAPI() 
    { 
     try 
     { 
      var postObject = JsonConvert.SerializeObject(thisUser); 

      string _serviceUrl = Constants.BaseUrl + "api/Account/Register"; 
      HttpClient client = new HttpClient(); 

      await client.PostAsync(new Uri(_serviceUrl), new HttpStringContent(postObject, Windows.Storage.Streams.UnicodeEncoding.Utf8, "application/json")); 
     } 
     catch (Exception) 
     { 
      throw; 
     } 

    } 

爲thisUser值像這樣:

 RegisterModel thisUser = new RegisterModel(); 
thisUser.UserDetails = new UserDetails(); 
     thisUser.Email = UserInputemail.Text; 
     thisUser.Password = "addsFABBS!2"; 
     thisUser.ConfirmPassword = "addsFABBS!2"; 
     thisUser.UserDetails.FullName = UserInputName.Text; 
     thisUser.UserDetails.Username = UserInputUserName.Text; 
     thisUser.UserDetails.FullName = UserInputName.Text; 
     thisUser.UserDetails.ICEFullName = ICEName.Text; 
     thisUser.UserDetails.ICEMobileNumber = int.Parse(ICEPhoneNo.Text); 
     thisUser.UserDetails.DoctorFullName = DocName.Text; 
     thisUser.UserDetails.DoctorMobileNumber = int.Parse(DocPhoneNo.Text); 

postObject保持爲空。它具有值{},在此用戶中存在這些值。

的thisUser是具有以下屬性RegisterModel類的一個實例:

using System.Runtime.Serialization; 
    namespace APIValueSetterTest.Model 
    { 
    [DataContract] 
    public class RegisterModel 
    { 
     public int UserId { get; set; } 

     public string Email { get; set; } 

     public string Password { get; set; } 

     public string ConfirmPassword { get; set; } 

     public UserDetails UserDetails { get; set; } 
    } 

} 

和用戶詳細信息類如下:

using System.Runtime.Serialization; 

namespace APIValueSetterTest.Model 
{ 
    [DataContract] 
    public class UserDetails 
    { 
     public int UserId { get; set; } 

     public string FullName { get; set; } 

     public string Username { get; set; } 

     public string ICEFullName { get; set; } 

     public int ICEMobileNumber { get; set; } 

     public string DoctorFullName { get; set; } 

     public int DoctorMobileNumber { get; set; } 
    } 
} 

我要去哪裏錯了?

回答

2

我認爲你需要指出這一類的性的判定是數據成員,就像這樣:

using System.Runtime.Serialization; 

namespace APIValueSetterTest.Model 
    { 
    [DataContract] 
    public class RegisterModel 
    { 
     [DataMember]  
     public int UserId { get; set; } 
     [DataMember]  
     public string Email { get; set; } 
     [DataMember] 
     public string Password { get; set; } 
     [DataMember] 
     public string ConfirmPassword { get; set; } 
     [DataMember] 
     public UserDetails UserDetails { get; set; } 
    } 

} 

也是一樣的的UserDetails類:

using System.Runtime.Serialization; 

namespace APIValueSetterTest.Model 
{ 
    [DataContract] 
    public class UserDetails 
    { 
     [DataMember] 
     public int UserId { get; set; } 
     [DataMember] 
     public string FullName { get; set; } 
     [DataMember] 
     public string Username { get; set; } 
     [DataMember] 
     public string ICEFullName { get; set; } 
     [DataMember] 
     public int ICEMobileNumber { get; set; } 
     [DataMember] 
     public string DoctorFullName { get; set; } 
     [DataMember] 
     public int DoctorMobileNumber { get; set; } 
    } 
} 

屬性不飾有DataMember屬性將導致它們被串行器忽略。