ASP .NET Boilerplate — регистрация сборки

Я делаю приложение на ASP .NET Boilerplate Framework с AngularJS и Entity 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:

(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;
                    })
                );
            };

        }
    ]);
})();

Я только начинаю в этом Framework, я буду рад, если вы можете мне помочь.

Если я должен принести вам больше информации, просто скажите это, пожалуйста.


person money152    schedule 04.06.2016    source источник


Ответы (1)


Мне не хватает информации от вас, поэтому я пытаюсь угадать, исходя из того, что вижу.

  1. Добавьте зависимость от ShopApplicationModule
  2. Предоставьте веб-API как «приложение», а не «shopsystem» (если вы не изменили javascript из Apb):
[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();
        }
    }
  1. javascript: "success(...)" устарел в AngularJS 1.4+. Используйте тогда(....)
  2. 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
    })
);
person Gianpiero    schedule 26.10.2017