1

このコードを実行すると、データが表示されず、空白の画面が表示されます。クリックすると空白のデータ"in other formats: json"が返されます。"{ }"

ただし、実際にはデータが含まれています。クリック"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) };
        }
    }
}
4

1 に答える 1

1

デフォルトでは、 ServiceStack の Text Serializersはパブリック プロパティのみをシリアル化し、DTO にはフィールドとプロパティが混在しています。すべての DTO をパブリックプロパティに変更するか、これを次のように追加しますAppHost.Configure()

ServiceStack.Text.JsConfig.IncludePublicFields = true;
于 2013-03-08T09:25:23.040 に答える