2
  1. Пользователь представлен список компаний
  2. Пользователь выбирает компанию, и представлен список отчетов, определенной для этой компании

Я настроил мой угловой appp как таковой:Угловое маршрутизация для одной страницы приложений (ASP.Net MVC Web API)

angular.module('xcmApp', ['ngRoute', 'ngResource']) 
.config(function ($routeProvider) { 
    $routeProvider 
    .when('/', 
    { 
     controller: 'companiesController', 
     templateUrl: '/views/companylist.html' 
    }) 
    .when('/Reports/:companyid', 
    { 
     controller: 'reportsController', 
     templateUrl: 'views/reportlist.html' 
    }) 
    .otherwise({ redirectTo: '/' }) 
}) 
.factory('companiesFactory', ['$resource', 
    function ($resource) { 
     return $resource('/api/companies', {}, { 
      query: { method: 'GET', params: {}, isArray: true } 
     }); 
    } 
]) 
.controller('companiesController', function ($scope, companiesFactory) { 
    $scope.Companies = companiesFactory.query(); 
}) 
.factory('reportsFactory', ['$resource', 
    function ($resource) { 
     return $resource('/api/reports/:companyid', {}, { 
      query: { method: 'GET', params: { companyid: '@@companyid' }, isArray: true } 
     }); 
    } 
]) 
.controller('reportsController', function ($scope, reportsFactory) { 
    $scope.Reports = reportsFactory.query(); 
}); 

мой WebAPI контроллер прост:

[Route("api/[controller]")] 
public class ReportsController : Controller 
{ 
    // GET: api/values 
    [HttpGet("{companyid}")] 
    public IEnumerable<PBMMMIS.Data.WebReport> Get(string companyid) 
    { 
     return Xerox.XCM.PBMMMIS.Data.CompanyAPIDataContext.GetReports(companyid); 
    } 

} 

Я не уверен, как построить маршруты, чтобы принять параметр companyid, чтобы список отчетов мог быть выбран соответствующим образом. Любая помощь искренне ценится.

ответ

1

Ваш контроллер и метод должен выглядеть следующим образом:

[Route("api/reports")] 
public class ReportsController : Controller 
{ 

    [HttpGet] 
    [Route("{companyid}")] 
    public IEnumerable<PBMMMIS.Data.WebReport> Get(string companyid) 
    { 
     return Xerox.XCM.PBMMMIS.Data.CompanyAPIDataContext.GetReports(companyid); 
    } 
    ...... 
    } 

и вызов должен быть:

$resource('/api/reports/:companyid', {companyid: '@@companyid'}, { 
    query: { method: 'GET', isArray: true} 
}); 
2

Вам потребуется RoutePrefix для контроллера и маршрута для метода действия.

[RoutePrefix("api/reports")] <=== RoutePrefix 
public class ReportsController : Controller 
{ 
    [HttpGet] 
    [Route("{companyid}")] <=== Route 
    public IEnumerable<PBMMMIS.Data.WebReport> Get(string companyid) 
    { 
     return Xerox.XCM.PBMMMIS.Data.CompanyAPIDataContext.GetReports(companyid); 
    } 
} 
Смежные вопросы