ABP理论学习之MVC控制器(新增)

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介:

本篇目录

介绍

ABP通过Abp.Web.Mvc nuget包集成了ASP.NET MVC控制器。你可以像常规那样创建MVC控制器。依赖注入对于常规的MVC控制器可以正确地工作。

但是,你应该让你的控制器继承于AbpController,该基类控制器提供了很多有用的东西,而且更好地集成到了ABP中。

AbpController基类

下面是一个派生自AbpController的简单控制器:

public class HomeController : AbpController
{
    public ActionResult Index()
    {
        return View();
    }
}

本地化

AbpController中定义了L方法使得本地化更加简单。例子:

public class HomeController : AbpController
{
    public HomeController()
    {
        LocalizationSourceName = "MySourceName";
    }
    
    public ActionResult Index()
    {
        var helloWorldText = L("HelloWorld");
        
        return View();
    }
}

要使L方法生效,必须设置LocalizationSourceName。你可以在自己的控制器基类中设置而不用在每个控制器中都重复设置。

异常处理

异常都是自动处理的,自动记录日志,而且会给客户端返回一个合适的响应。

查看异常处理博客获得更多信息。

响应结果的包装

如果返回类型是JsonResult(或者异步action方法的Task),ABP会默认封装该action方法的响应结果。你可以通过为控制器或者actions使用WrapResult和DontWrapResult特性来更改默认的封装(注意:以前有园友经常问到这个)。

查看ajax博客获取更多信息。

审计日志

如果你从AbpController派生控制器的话,那么审计日志会自动记录。

查看审计日志博客获取更多信息。

授权

你可以为控制器或者action方法使用AbpMvcAuthorize特性来阻止未授权的用户使用控制器和action方法。例子:

public class HomeController : AbpController
{
    [AbpMvcAuthorize("MyPermissionName")]
    public ActionResult Index()
    {
        return View();
    }
}

AbpApiController也定义了检查权限的IsGranted方法作为快捷方式。请查看授权一节获取更多信息。

工作单元

MVC的action方法默认不是工作单元。例如,如果你需要在action方法中打开数据库连接,就需要像下面那样声明UnitOfWork特性:

public class HomeController : AbpController
{
    private readonly IRepository<User, long> _userRepository;

    public HomeController(IRepository<User, long> userRepository)
    {
        _userRepository = userRepository;
    }

    [UnitOfWork]
    public virtual ActionResult Users(string filter)
    {
        var users = _userRepository
            .GetAll()
            .Where(u => u.UserName.StartsWith(filter))
            .ToList();

        return View(users);
    }
}

这里我们声明了UnitOfWork特性。因为仓储的 GetAll()方法返回了 IQueryable,而当它使用 ToList()方法(由于IQueryable的延迟执行)时需要一个打开的数据库连接,所以这里需要声明该特性。注意该action方法应该声明为virtual(否则拦截无法工作)。

请查看工作单元获取更多。

其他

你还可以使用预注入的 AbpSessionEventBusPermissionManagerPermissionCheckerSettingManager,FeatureManagerFeatureCheckerLocalizationManagerLoggerCurrentUnitOfWork等基属性以及更多。

要了解以上属性,请查阅其他相应博客。





本文转自tkbSimplest博客园博客,原文链接:http://www.cnblogs.com/farb/p/ABPMVCController.html,如需转载请自行联系原作者


相关实践学习
通过日志服务实现云资源OSS的安全审计
本实验介绍如何通过日志服务实现云资源OSS的安全审计。
目录
相关文章
|
设计模式 存储 前端开发
MVC(模型-视图-控制器)是一种在Web应用程序开发中广泛使用的软件设计模式
【5月更文挑战第12天】MVC模式是Web应用开发中的常见设计模式,将逻辑、数据和界面分离,提升代码可维护性和重用性。模型处理数据逻辑,视图展示数据,控制器协调用户输入与模型视图交互。优点包括代码分离、易维护、可扩展和组件重用,促进高效灵活的开发。
186 2
|
11月前
|
前端开发 Java 开发者
Spring MVC中的控制器:@Controller注解全解析
在Spring MVC框架中,`@Controller`注解是构建Web应用程序控制层的核心。它不仅简化了控制器的定义,还提供了灵活的请求映射和处理机制。本文将深入探讨`@Controller`注解的用法、特点以及在实际开发中的应用。
690 0
|
设计模式 前端开发 Java
【Spring MVC】快速学习使用Spring MVC的注解及三层架构
【Spring MVC】快速学习使用Spring MVC的注解及三层架构
358 1
|
前端开发 Java Spring
作用域大揭秘:探索Spring MVC控制器作用域的精髓
作用域大揭秘:探索Spring MVC控制器作用域的精髓
103 2
|
设计模式 存储 前端开发
Java从入门到精通:2.2.1学习Java Web开发,了解Servlet和JSP技术,掌握MVC设计模式
Java从入门到精通:2.2.1学习Java Web开发,了解Servlet和JSP技术,掌握MVC设计模式
180 0
|
前端开发 Java 应用服务中间件
快速上手:探索Spring MVC的学习秘籍!
快速上手:探索Spring MVC的学习秘籍!
|
前端开发 Java Spring
ssm中spring mvc找不到控制器,报错404
ssm中spring mvc找不到控制器,报错404
mvc.net分页查询案例——控制器(HomeController.cs)
mvc.net分页查询案例——控制器(HomeController.cs)
|
设计模式 前端开发 数据处理
MVC架构中,控制器和模型之间是如何交互的
MVC架构中,控制器和模型之间是如何交互的
184 0
|
存储 设计模式 前端开发
请解释 Web 应用程序的 MVC(模型-视图-控制器)架构。
【2月更文挑战第26天】【2月更文挑战第89篇】请解释 Web 应用程序的 MVC(模型-视图-控制器)架构。
146 0