2013-03-08 56 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