c# - ASP .NET 样板 - 注册程序集

标签 c# asp.net angularjs asp.net-mvc asp.net-boilerplate

我正在使用 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;
                    })
                );
            };

        }
    ]);
})();

我只是这个框架的初学者,如果你能帮助我,我会很高兴。

如果我应该给您带来更多信息,请说出来。

最佳答案

我想念你的一些信息,所以我试着从我看到的开始猜测。

  1. 添加来自 ShopApplicationModule 的依赖
  2. 将 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();
        }
    }
  1. javascript:“success(...)”已从 AngularJS 1.4+ 中弃用。使用 then(....)
  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
    })
);

关于c# - ASP .NET 样板 - 注册程序集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37632646/

相关文章:

c# - 普通 MVC 项目登录需要哪些表?

c# - 将多个文本框和标签放在同一列CSS上?

c# - 如何使用每个 C# 智能技术将项目从其他列表添加到列表中

javascript - Angularjs 动态表单内容

javascript - Angular UI-Router $urlRouterProvider .当不再工作时*

c# - 从 View 模型更新模型

c# - 下载 zip + 文件到内存中

c# - Xamarin vs. Mono vs. Monodevelop

c# - twitter 喜欢.Net 平台的开源软件吗?

javascript - 如何在 td 内部重复数组,以便 td 包含所有数组值