我正在使用 AngularJS 和 Entity Framework 在 ASP .NET Boilerplate Framework 上开发一个应用程序。
很长时间以来我一直在学习本教程 (http://www.codeproject.com/Articles/791740/Using-AngularJs-ASP-NET-MVC-Web-API-and-EntityFram#ArticleBuildWebApiServices)
当谈到注册 Controller 时,通过 WebApiModule 它没有显示启动的迹象(我在 Controller 构造函数上放置了一个断点,但它没有响应)。我的目标是让所有产品都带有 Angular Controller 。
这是我的 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;
})
);
};
}
]);
})();
我只是这个框架的初学者,如果你能帮助我,我会很高兴。
如果我应该给您带来更多信息,请说出来。
最佳答案
我想念你的一些信息,所以我试着从我看到的开始猜测。
- 添加来自 ShopApplicationModule 的依赖
- 将 web api 公开为“app”,而不是“shopsystem”(除非您从 Apb 修改了 javascript):
[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(); } }
- javascript:“success(...)”已从 AngularJS 1.4+ 中弃用。使用 then(....)
- javascript: 远程方法管理错误
... 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 }) );
关于c# - ASP .NET 样板 - 注册程序集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37632646/