2013-12-12 3 views
1

У меня возникла проблема при попытке вызвать мой веб-api с запросом на отправку, возвращается пустой массив.Request.CreateResponse возвращает пустые данные почтальона

Мой метод:

// POST: Api/v1/transaction/ 
    [HttpPost] 
    public HttpResponseMessage Post(string user) 
    { 

     var userId = new Guid(user); 

     var transactions = new Collection<TransactionDataTransferObject>(); 

     try 
     { 
      var seller = _databaseContext.Sellers.Single(s => s.Id == userId); 
      var sellerMedias = _databaseContext.Medias.Where(m => m.TakenBy.Id == seller.Id); 

      foreach (var sellerMedia in sellerMedias) 
      { 

       var allLogsForMedia = _databaseContext.Logs.Where(l => l.ObjectReferenceId == sellerMedia.Id); 

       foreach (var logMedia in allLogsForMedia) 
       { 
        var transaction = new TransactionDataTransferObject 
         { 
          Date = logMedia.DateTimeInUtc, 
          Amount = sellerMedia.PriceInSek, 
          MediaName = sellerMedia.FileName, 
          UserName = seller.FirstName + " " + seller.LastName 
         }; 

        transactions.Add(transaction); 
       } 
      } 
     } 

     catch (Exception exception) 
     { 

      return Request.CreateErrorResponse(HttpStatusCode.NotFound, exception); 
     } 

     return Request.CreateResponse(HttpStatusCode.OK, transactions); 
    } 

Когда я отладки переменной транзакции, я вижу два объекта в коллекции. Мой ответ на почтальона является

[ 
    {}, 
    {} 
] 

Что я сделал не так? Где отправляются мои данные?

ответ

1

Хорошо, после нескольких часов пробивания моей головы в таблице я узнал, что использовал [DataContract] в качестве фильтра в ViewModel, TransactionDataTransferObject.

Как это:

[DataContract] 
public class TransactionDataTransferObject 
{ 
    [Display(Name = "Date")] 
    public DateTime Date { get; set; } 

    public string MediaName { get; set; } 

    public Guid MediaId { get; set; } 

    public string UserName { get; set; } 

    public Guid UserId { get; set; } 

    [Display(Name = "Description")] 
    public string Discriminator { get; set; } 

    [Display(Name = "Amount")] 
    public decimal Amount { get; set; }  

} 

Что было неправильно в этом случае ...

Спасибо за чтение!

+0

Это помогло мне. В моем случае мне нужно было добавить '[DataMember]' к свойствам, которые мне понадобились для сериализации. –

Смежные вопросы