2014-10-08 4 views
0

에 보내는 방법 json 데이터를 직렬화 가능 클래스로 전송할 때 문제가 발생합니다. 클라이언트 측에서 브라우저에서 데이터를 확인하면 사실이지만 서버 측에서 serializable 클래스의 필드는 null입니다.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(); 
      } 
     }); 

웹 방법을 할당 :이 방법 ticket.ProductId에서 ticket.Type 필드는 디폴트 값 또는 null이있다.

[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; } 

} 

답변

1

나는 데이터 계약 등의 데이터 멤버와 클래스 등의 속성을 표시와 함께이 문제를 해결했다. 여기에 새로운 수업 구조를 공유하고 있습니다 :

[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; } 
} 
관련 문제