我正在尝试从angularjs $ http函数调用WebApi方法。我尝试过使用标准的get,query和一个动作名称,但我已经纠正,意识到你无法通过Get传递一个对象。所以我正在使用Post。正在调用Web Api并返回我期望的值。但是,angularjs侧没有获得该值。这是最新的,不起作用:
的WebAPI
[RoutePrefix("api/frequentpawner")]
public class FrequentPawnerController : ApiController
{
[HttpPost]
public HttpResponseMessage Post([FromBody] FrequentPawnerReportCriteria criteria)
{
var repo = new FrequentPawnerReport();
var result = repo.GetReport(criteria);
var httpResult = new HttpResponseMessage(HttpStatusCode.OK);
var jsonMediaTypeFormatter = new JsonMediaTypeFormatter
{
SerializerSettings =
{
ContractResolver = new CamelCasePropertyNamesContractResolver()
}
};
httpResult.Content = new ObjectContent<List<FrequentPawnerReport>>(result, jsonMediaTypeFormatter);
return httpResult;
}
function getFrequentPawner(criteria) {
return $http.post("/api/FrequentPawner/Post", criteria)
.then (getFrequentPawnerComplete)
.catch(getFrequentPawnerFailed);
function getFrequentPawnerComplete(response) {
var x = response.data;
return response.data.results;
}
function getFrequentPawnerFailed(error) {
alert("XHR failed for frequent pawner report: " + error.responseText);
}
}
标准对象:
vm.criteria = { maxResults:25, startDate:新日期(2014年,10年,1年), endDate:new Date(2014,11,1), isActive:是的, transTypeId:1, 司法管辖区:[], reportType:1, 关系:1, make:'', propertyGroupId:0, propertyTypeId:0, 辖区数量:0, storeCount:0, useTypePawn:false, useTypeScrap:false }
任何想法都表示赞赏。
答案 0 :(得分:0)
我在您的代码中看到一些错误。
你的get方法返回集合,所以这里'get' : {method: 'GET', isArray: false },
isArray 标志应该是 true ,否则当得到响应时你会从angular得到错误。
你的Get方法没有参数,所以你需要像
这样的东西public IEnumerable<string> Get(FrequentPawnerReportCriteria criteria)
您混淆了Get和Post方法。因此,可能此操作FrequentPawnerReport
应该是一个帖子,并且只返回一个对象。
public FrequentPawnerReport Post([FromBody] FrequentPawnerReportCriteria criteria)
{
var repo = new FrequentPawnerReport();
return repo.GetReport(criteria);
}