AngularJS $http and WebApi 2



我有一个刚刚出现的问题。我有一个具有此方法的 Web API:

[HttpGet]
[Route("")]
public IHttpActionResult Get(OrderRequestViewModel model)
{
    var order = new orderHeader()
    {
        sordNo = model.OrderNumber,
        process = orderHeader.orderProcesses.Read
    };
    order.processInfos.read_CoreHistory = model.ReadCoreHistory;
    var response = this.Connection.webServicesAdvanced.ordersHubAction_S(this.SecurityToken, order);
    switch (response.state)
    {
        case processorResult.resultEnum.failed:
        case processorResult.resultEnum.validationfailed:
            throw new HttpException(500, response.info);
        default:
            return Ok(new OrderResponseViewModel(response.obj));
    }
}

OrderRequestViewModel 只有 2 个属性:OrderNumber(字符串)和 ReadCoreHistory(布尔值)。

在我的 Angular JS 应用程序中,我有一个如下所示的服务:

.factory('OrderService', ['$http', '$filter', 'apiUrl', function ($http, $filter, api) {
    var _get = function (orderNumber, readCoreHistory) {
        return $http.get(api + 'orders?orderNumber=' + orderNumber + '&readCoreHistory=' + readCoreHistory);
    }
    //-- removed for brevity --//
    var service = {};
    service.get = _get;
    //-- removed for brevity --//
    return service;
}])

当我从控制器调用 get() 方法时,如果我打开小提琴手,它会指出:

没有 MediaTypeFormatter 可用于从媒体类型为"application/octet-stream"的内容中读取类型为"OrderRequestViewModel"的对象。

显然这是一个内容类型标头问题,但我无法访问我可以看到的 ajax 调用选项。有谁知道我该如何解决这个问题?

GET方法没有正文,复杂类型由 WebAPI 中请求正文中的数据填充 ASP.NET 您应该在方法签名中的复杂类型之前添加[FromUri]属性。

public IHttpActionResult Get([FromUri] OrderRequestViewModel model)
{ ...

最新更新