但是你的Controllers应该从 AbpController 派生,因为在该基类中ABP已经提供了一些有用的便利方法。

    6.1.2 AbpController 基类

    下面是一个简单的派生自AbpApiController的示例代码:

    1. 本地化

    为了使本地化更简单,ABP在AbpController中定义了一个 L 方法。示例如下:

    为了能够使用 L 方法,首先我们应该初始化 LocalizationSourceName。当然,为了不重复初始化该变量,我们可以定义一个继承自AbpController的基类,在该类中初始化它,以后所有的Controller类都继承自该基类。

    2. 异常处理

    3. 包装返回内容

    如果返回的类型是 JsonResult (或者异步Action的Task)ABP默认会将Action的返回内容进行包装。你可以改变这个,只要在Controller的Action上面使用特性:WrapResult 或者 DontWrapResult,详情请参考

    4. 审计日志

    如果派生自AbpController,那么日志会被自动记录。详情请参考。

    5. 权限认证

    你可以用 AbpMvcAuthorize 特性来阻止未授权的用户来访问你的Controllers和Actions。
    示例如下:

    AbpController也定义了一个快速检测权限的方法 IsGranted
    详情请参照。

    6. 工作单元

    由于仓储的 GetAll() 方法返回的是 IQuerable 类型,在调用 ToList() 方法的时候需要连接数据库(这是由于IQuerable的延迟执行特性所决定的)。

    详情请参照。

    6.1.3 其他

    你也可以(pre-inijected)预先注入 AbpSession, EventBus, PermissionManager, PermissionChecker, SettingManager, FeatureManager, FeatureChecker, LocalizationManager, Logger, CurrentUnitOfWork 等基础属性。