我正在使用AngularJS和Entity Framework在ASP .NET Boilerplate Framework上进行应用程序。
很长一段时间我都在学习本教程(http://www.codeproject.com/Articles/791740/Using-AngularJs-ASP-NET-MVC-Web-API-and-EntityFram#ArticleBuildWebApiServices)
当注册控制器时,通过WebApiModule它没有显示启动的迹象(我在控制器构造函数上设置断点并且它没有响应)。我的目标是使用角度控制器获得所有产品。
这是我的WebApiModule代码:
{
[DependsOn(typeof(AbpWebApiModule))]
public class ShopWebApiModule : AbpModule
{
public override void Initialize()
{
IocManager.RegisterAssemblyByConvention(Assembly.GetExecutingAssembly());
DynamicApiControllerBuilder
.ForAll<IApplicationService>(Assembly.GetAssembly(typeof(ShopApplicationModule)), "shopsystem")
.Build();
}
}
}
这是我的IProductAppServiceCode:
{
public interface IProductAppService:IApplicationService
{
GetProductsOutput GetProducts(GetProductsInput input);
//void UpdateProduct(UpdateProductInput input);
//void CreateProduct(CreateProductInput input);
}
}
这是我的ProductAppServiceCode:
{
public class ProductAppService : ApplicationService, IProductAppService
{
private readonly IProductRepository _productRepository;
public ProductAppService(IProductRepository productRepository)
{
_productRepository = productRepository;
}
public GetProductsOutput GetProducts(GetProductsInput input)
{
var products = _productRepository.GetKind(input.BookKind);
return new GetProductsOutput
{
Products = Mapper.Map<List<ProductDto>>(products)
};
}
}
}
这是我的Angular Controller代码:
(function () {
var app = angular.module('app');
var controllerId = 'shop.views.product.list';
app.controller(controllerId, [
'$scope', 'abp.services.shopsystem.product',
function ($scope, productService) {
var vm = this;
vm.products = [];
$scope.productType = 0;
vm.refreshProducts();
$scope.$watch('selectedProductType', function (value) {
vm.refreshTasks();
});
vm.refreshProducts = function () {
abp.ui.setBusy( //Set whole page busy until getTasks complete
null,
productService.getProducts({ //Call application service method directly from javascript
}).success(function (data) {
vm.tasks = data.tasks;
})
);
};
}
]);
})();
我只是这个框架中的乞丐,如果你能帮助我,我会很高兴。
如果我应该为您提供更多信息,请说出来。
答案 0 :(得分:0)
我想念你的一些信息,所以我试着从我看到的东西开始猜测。
[DependsOn(typeof(AbpWebApiModule), typeof(ShopApplicationModule))] public class ShopWebApiModule : AbpModule { public override void Initialize() { IocManager.RegisterAssemblyByConvention(Assembly.GetExecutingAssembly()); Configuration.Modules.AbpWebApi().DynamicApiControllerBuilder .ForAll(Assembly.GetAssembly(typeof(ShopApplicationModule)), "app") .Build(); } }
... app.controller(controllerId, [ '$scope', 'abp.services.app.product', ... var input = {}; // not sure here about your input DTO! abp.ui.setBusy( null, //set whole page busy productService.getProducts(input) .then( function successCallback(response) { vm.tasks = response.data; }, function errorCallback(response) { // do what you like } ) .finally(function () { // do what you like }) );