从Angularjs $resource passing object中调用WebApi
本文关键字:调用 WebApi object passing Angularjs resource | 更新日期: 2023-09-27 18:15:40
我试图从angularjs $http函数调用WebApi方法。我试过使用标准的get,查询和操作名称,但我被纠正了,意识到你不能用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。标准= {maxResults: 25日startDate: new Date(2014, 10,1),endDate:新日期(2014,11,1),isActive:没错,transTypeId: 1、辖区:[],reportType: 1、关系:1、:",propertyGroupId: 0,propertyTypeId: 0,jurisdictionCount: 0,storeCount: 0,useTypePawn:假的,useTypeScrap:假}
我在你的代码中看到一些错误。
-
你的get方法返回集合,所以这里
'get' : {method: 'GET', isArray: false },
isArray标志应该是true,否则你会得到错误从角,当得到响应。 -
你的Get方法没有参数,所以你可能需要像
这样的东西public IEnumerable<string> Get(FrequentPawnerReportCriteria criteria)
-
你混淆了Get和Post方法。因此,这个动作
FrequentPawnerReport
可能应该是一个post,并且只返回一个对象。public FrequentPawnerReport Post([FromBody] FrequentPawnerReportCriteria criteria) { var repo = new FrequentPawnerReport(); return repo.GetReport(criteria); }