Javascript Angularjs$资源多个帖子
我有多种Javascript Angularjs$资源多个帖子,javascript,.net,angularjs,asp.net-web-api,angular-resource,Javascript,.net,Angularjs,Asp.net Web Api,Angular Resource,我有多种Web Api Post方法如: [HttpPost] public async Task<IHttpActionResult> Post([FromBody] AdModel adModel) { //Post } [HttpPost] [Route("AddToWatchList")] public async Task<IHttpActionResult> AddToWatchList
Web Api Post方法
如:
[HttpPost]
public async Task<IHttpActionResult> Post([FromBody] AdModel adModel)
{
//Post
}
[HttpPost]
[Route("AddToWatchList")]
public async Task<IHttpActionResult> AddToWatchList(int adId)
{
// Post to database
}
AngularJs控制器:
app.controller('listCategoryAdsController',
['ngAuthSettings', '$scope', 'adService', '$routeParams', '$location',
function (ngAuthSettings, $scope, adService, $routeParams, $location) {
$scope.addToWatchlist = function (adId) {
adService.addToWatchList({ adId: adId }).$promise.then(
function(result) {
var path = $location.path();
$location.path(path).search('nw', 1);
},
function (error) {
});
};
<div class="col-sm-3 text-right price-box" data-ng-repeat="ad in Ads">
<h2 class="item-price">
$ {{ad.price}}
</h2>
<i class="fa fa-certificate">
</i>
<a ng-click="addToWatchlist(ad.adId)" class="btn btn-default btn-sm make-favorite" tooltip="Click to add to watch list"
tooltip-placement="left"
tooltip-trigger="mouseenter">
<i class="fa fa-heart"></i>
<span>Watch list</span>
</a>
</div>
从何处调用我的Html方法:
app.controller('listCategoryAdsController',
['ngAuthSettings', '$scope', 'adService', '$routeParams', '$location',
function (ngAuthSettings, $scope, adService, $routeParams, $location) {
$scope.addToWatchlist = function (adId) {
adService.addToWatchList({ adId: adId }).$promise.then(
function(result) {
var path = $location.path();
$location.path(path).search('nw', 1);
},
function (error) {
});
};
<div class="col-sm-3 text-right price-box" data-ng-repeat="ad in Ads">
<h2 class="item-price">
$ {{ad.price}}
</h2>
<i class="fa fa-certificate">
</i>
<a ng-click="addToWatchlist(ad.adId)" class="btn btn-default btn-sm make-favorite" tooltip="Click to add to watch list"
tooltip-placement="left"
tooltip-trigger="mouseenter">
<i class="fa fa-heart"></i>
<span>Watch list</span>
</a>
</div>
${{ad.price}}
404(未找到)
您正在向AddToWatchList()发送一个简单类型(int),因此Web API正在URI中查找adId参数
如果参数是“简单”类型,Web API将尝试获取该值
从URI。简单类型包括.NET基本类型(int,
bool、double等),加上TimeSpan、DateTime、Guid、decimal,
和字符串,再加上任何具有可从
一串。(有关类型转换器的详细信息,请稍后。)对于复杂类型,请访问Web
API尝试使用媒体类型从消息正文读取值
格式化程序。
您有几个选择:
1-通过URI发送adId。。。api/ads/addtowatchlist?adId=123
2-显然,在第一种方法中使用复杂对象。虽然让一个类只有一个int属性感觉很傻。。。这就是为什么你和我不喜欢这种方法。但是,如果您已经有了一个Ad类,那么重用它并没有什么错
3-尝试将[FromBody]添加到int参数的要求。并在没有标识符的情况下发送adId
=123
服务器webapi控制器上设置的基本路由是什么?您还可以将webapi函数重命名为PostAddToWatchList
,然后重试。基本路由是[RoutePrefix(“api/Ads”)]