2014-10-08 5 views
0

возникает проблема при отправке данных 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(); 
      } 
     }); 

веб-метод: На этом методе 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; } 

} 

ответ

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; } 
} 
Смежные вопросы