我正在将Web应用程序从MVC5移植到MVC6。该功能曾经在MVC5中正常工作,但在MVC6中却无法正常工作。

我正在通过AngularJS将数据发布到此WebAPI方法,但是search参数始终为null。香港专业教育学院试图用[FromBody][FromHeader]装饰它,但似乎都不起作用。控制器被命中,该值仅为null,这是什么问题?

[HttpPost("AdvancedSearch")]
public List<MatchResult> AdvancedSearch(string searchParameter)
{
    var searchResults = service.GetResults(searchParameter);

    return searchResults;
}


我的AngularJS调用看起来像这样

myAPI.advancedSearch = function (searchParameter) {
    var url = '/api/advancedsearch/';

    // Request data
    return $http({
        method: 'POST',
        data: { searchParameter: searchParameter },
        url: url
    });
}


我已验证数据已发送,在Chrome网络工具中,“请求有效载荷”是正确的

{searchParameter: "n1"}

最佳答案

我找到了一种无需使用模型或查询字符串即可执行此操作的方法。 This answer explains它,但实际上您可以使用

[HttpPost]
public System.Net.Http.HttpResponseMessage Post([FromBody]dynamic value)
{
   //...
}


value然后将包含您的所有帖子数据。

编辑

要进一步阅读,请see this post,包括所有绑定情况以及何时以及何时将不起作用的表格!

10-02 14:36