我正在将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,包括所有绑定情况以及何时以及何时将不起作用的表格!