2013-03-08 13 views
1

當我運行這段代碼時,數據不顯示,並且我得到一個空白屏幕。 如果我點擊"in other formats: json"它會返回"{ }"空白數據。ServiceStack格式 - XML顯示數據,其他不是

但是,它實際上有數據。如果我點擊"in other formats: xml"它會返回完整的數據。

那麼,爲什麼我的XML工作,但我的HTML和JSON顯示我的空白屏幕?

[Route("customers", "GET")] 
[Route("customers/{Id}", "GET")] 
[Route("customers/page/{Page}", "GET")] 
[Route("customers/page/{Page}/size/{Size}", "GET")] 
[Route("customers/{Id}/orders", "GET")] 
[Route("customers/{Id}/orders/page/{Page}", "GET")] 
[Route("customers/{Id}/orders/page/{Page}/size/{Size}", "GET")] 
public class Customers { 
    public Customers() { Page = 1; Size = 20; } 
    public string Id { get; set; } 
    public int Page { get; set; } 
    public int Size { get; set; } 
} 
public class CustomersResponse { 
    public IList<Customer> Customers; 
    public int Pages; 
} 
public class CustomerDetailResponse { 
    public Customer Customer; 
    public IList<Order> Orders; 
    public int Pages; 
} 
public class CustomersService : BaseService { 
    public ICustomersManager CustomersManager { get; set; } 
    public IOrdersManager OrdersManager { get; set; } 
    public IValidator<Customers> Validator { get; set; } 
    public object Get(Customers req) { 
     var result = Validator.Validate(req); 
     if(!result.IsValid) return result.ToResponseDto(); 
     if (req.Id == null) { 
      return new CustomersResponse { 
       Customers = CustomersManager.GetCustomers(req), 
       Pages = CustomersManager.GetCustomersPageCount(req) }; 
     } 
     else { 
      return new CustomerDetailResponse { 
       Customer = CustomersManager.GetCustomer(req), 
       Orders = OrdersManager.GetOrders(req), 
       Pages = OrdersManager.GetOrdersPageCount(req) }; 
     } 
    } 
} 

回答

1

默認情況下ServiceStack's Text Serializers只序列公共屬性,你DTO的具有字段和屬性的組合。要麼改變他們所有的DTO的公共性能或在您的AppHost.Configure()補充一點:

ServiceStack.Text.JsConfig.IncludePublicFields = true; 
+0

你是驚人的。感謝您的解釋。我永遠都不會自己弄明白這一點。 – Tom 2013-03-08 10:50:51