Ant*_*rim 11 c# asp.net api asp.net-web-api asp.net-web-api2
在我的一个API动作(PostOrder)中,我可能正在使用API(CancelOrder)中的另一个动作.两者都返回一个JSON格式的ResultOrderDTO类型,设置ResponseTypeAttribute为两个动作的一个,如下所示:
public class ResultOrderDTO
{
public int Id { get; set; }
public OrderStatus StatusCode { get; set; }
public string Status { get; set; }
public string Description { get; set; }
public string PaymentCode { get; set; }
public List<string> Issues { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我需要的是ResultOrderDTO从中读取/解析响应CancelOrder,以便我可以将其用作响应PostOrder.这就是我的PostOrder代码:
// Here I call CancelOrder, another action in the same controller
var cancelResponse = CancelOrder(id, new CancelOrderDTO { Reason = CancelReason.Unpaid });
if (cancelResponse is OkNegotiatedContentResult<ResultOrderDTO>)
{
// Here I need to read the contents of the ResultOrderDTO
}
else if (cancelResponse is InternalServerErrorResult)
{
return ResponseMessage(Request.CreateResponse(HttpStatusCode.InternalServerError, new ResultError(ErrorCode.InternalServer)));
}
Run Code Online (Sandbox Code Playgroud)
当我使用调试器时,我可以看到ResultOrderDTO它在响应中的某处(看起来像Content),如下图所示:
但是cancelResponse.Content不存在(或者至少我在将响应转换为其他内容之前无法访问它)并且我不知道如何读取/解析它Content.任何的想法?
ven*_*mit 19
只需将响应对象强制转换为OkNegotiatedContentResult<T>.Content属性是T类型的对象,在您的情况下是对象ResultOrderDTO.
if (cancelResponse is OkNegotiatedContentResult<ResultOrderDTO>)
{
// Here's how you can do it.
var result = cancelResponse as OkNegotiatedContentResult<ResultOrderDTO>;
var content = result.Content;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6832 次 |
| 最近记录: |