【问题标题】:Map AngularJs QueryString with Web Api Controller Parameter使用 Web Api 控制器参数映射 AngularJs QueryString
【发布时间】:2015-12-19 23:01:04
【问题描述】:

这是我的 Angularjs 控制器代码:

app.controller('listAdsController', ['$scope', 'myService', '$routeParams', '$location', function ($scope, myService, $routeParams, $location) {

myService.getAdsByCategory({categoryId : $routeParams.categoryId});
$scope.totalItems = 64;

$scope.pageChanged = function () {        
    var path = $location.path();
    $location.path(path).search('page', $scope.currentPage);
};

$scope.maxSize = 10;
$scope.bigTotalItems = 175;
$scope.currentPage= 1;
$scope.itemsPerPage = 50;
}]);

pageChangedfunction 中,我正在尝试使用如下查询字符串根据页码更改我的网址:

//localhost/category/property/4/house-for-rent?page=2

这是我对该 URL 的路由配置:

$routeProvider.when("/category/:category/:categoryId/:urlName", {
        controller: "listAdsController",
        templateUrl: "app/views/category-ads.html"
    });

下面是我的 Web Api 2 控制器:

    [HttpGet]
    public IHttpActionResult GetAllByCategory([FromUri] int categoryId, int? page = null)
    {
       //Code
    }

问题是,page 参数始终是null,无论我传入什么参数。有人可以指导我在这里缺少什么吗?

【问题讨论】:

  • 试试 Localhost/GetAllByCategory/1/2,如果可行,我对原因有一个很好的解释
  • 您的问题缺少一些重要部分:您的 Angular 代码如何调用 Web API 以及如何配置 Web API 路由?您发布的 Angular 代码不会调用 API。它只路由到带有模板app/views/category-ads.html 的视图,并将listAdsController 分配给它(一个Angular 控制器,不是Web API 控制器)。
  • @venerik 我正在使用 myService 获取 WebApi

标签: javascript asp.net .net angularjs asp.net-web-api


【解决方案1】:

问题很小。我只是将查询字符串传递给 url,但没有从 routeParam 获取它。

解决办法是:

$scope.categoryAds = jetService.getAllByCategory({ categoryId: $routeParams.categoryId, page: $routeParams.page });

您需要从查询字符串中获取page 并将其传递给您的服务。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-09-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多