如何将json数据发送到可序列化类

问题描述:

将json数据发送到可序列化类时存在问题。在客户端,当我检查浏览器上的数据时,它是真的,但在服务器端,可序列化类的字段为空。如何将json数据发送到可序列化类

客户端侧(使用道场):对票据对象的调试器线的Fileds分配

var Ticket = { 
     ProductId: productId, 
     Type: ticketType 
    }; 

    DataService.xhrPageMethodJson("api/Tickets/MyTickets" 
     , dojo.toJson(Ticket) 
     , { 
      success: function (data) { 
       debugger 
       loadSubPage(getRoot("Support/Tickets.aspx?mode=list")); 
      }, 
      error: function (err) { 
       LoadingOverlay.hide(); 
      } 
     }); 

Web方法:在该方法中ticket.ProductId,ticket.Type字段具有默认值或空值。

[HttpPost] 
    [AcceptVerbs("POST")] 
    [ActionName("MyTickets")] 
    [Authorize] 
    public void MyTickets([FromBody]Ticket ticket) 
    { 
     DataTable myTickets = db.Tickets.MyTickets(Globals.LogonUser.User.Id, ticket.ProductId, ticket.Type); 
     WebContext.Session["Tickets"] = myTickets; 
    } 

票务类:

[Serializable] 
[EntityTable(Name = "Tickets")] 
public class Ticket : Entity 
{ 
    public override int Id { get; set; } 
    public string Subject { get; set; } 
    public string Message { get; set; } 
    public DateTime SentDate { get; set; } 
    [JoinField(typeof(User), "Id")] 
    public int SenderUserId { get; set; } 
    [JoinField(typeof(Product), "Id")] 
    public int ProductId { get; set; } 
    [JoinField(typeof(TicketImportanceLevel), "Id")] 
    public int ImportanceLevel { get; set; } 
    public int Analyze { get; set; } 
    public int SolutionTransactionId { get; set; } 
    [JoinField(typeof(TicketType), "Id")] 
    public int Type { get; set; } 
    public int Status { get; set; } 
    public int AssignedUserId { get; set; } 
    public float Score { get; set; } 

} 

我已经解决了这个问题,标识性的数据成员和类的数据契约。这里我分享新的班级结构:

[Serializable] 
[DataContract] 
[EntityTable(Name = "Tickets")] 
public class Ticket : Entity 
{ 
    [DataMember] 
    public override int Id { get; set; } 
    [DataMember] 
    public string Subject { get; set; } 
    [DataMember] 
    public string Message { get; set; } 
    [DataMember] 
    public DateTime SentDate { get; set; } 
    [JoinField(typeof(User), "Id")] 
    [DataMember] 
    public int SenderUserId { get; set; } 
    [JoinField(typeof(Product), "Id")] 
    [DataMember] 
    public int ProductId { get; set; } 
    [JoinField(typeof(TicketImportanceLevel), "Id")] 
    [DataMember] 
    public int ImportanceLevel { get; set; } 
    [DataMember] 
    public int Analyze { get; set; } 
    [DataMember] 
    public int SolutionTransactionId { get; set; } 
    [JoinField(typeof(TicketType), "Id")] 
    [DataMember] 
    public int Type { get; set; } 
    [DataMember] 
    public int Status { get; set; } 
    [DataMember] 
    public int AssignedUserId { get; set; } 
    [DataMember] 
    public float Score { get; set; } 
}