Reputation: 16276
When I run this code, the data is not displaying, and I got a blank screen.
If I click "in other formats: json"
it returns "{ }"
blank data.
However, it actually has data in it. If I click "in other formats: xml"
it returns full data.
So, why is my XML working, but my HTML and JSON showing me blank screen?
[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) };
}
}
}
Upvotes: 1
Views: 67
Reputation: 143399
By default ServiceStack's Text Serializers only serializes public properties, your DTO's have a mix of fields and properties. Either change them all your DTOs to public properties or add this in your AppHost.Configure()
:
ServiceStack.Text.JsConfig.IncludePublicFields = true;
Upvotes: 1