ABP理论学习之MVC控制器(新增)
本篇目录
介绍###
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(否则拦截无法工作)。
请查看工作单元获取更多。
其他
你还可以使用预注入的 AbpSession, EventBus, PermissionManager, PermissionChecker, SettingManager, FeatureManager, FeatureChecker, LocalizationManager, Logger, CurrentUnitOfWork等基属性以及更多。
要了解以上属性,请查阅其他相应博客。
ABP理论学习之MVC控制器(新增)的更多相关文章
- ABP文档 - Mvc 控制器
文档目录 本节内容: 简介 AbpController基类 本地化 其它 过滤 异常处理和结果包装 审计日志 验证 授权 工作单元 反伪造 模型绑定器 简介 ABP通过nuget包Abp.Web.Mv ...
- ABP理论学习之OData集成(新增)
返回总目录 本篇目录 介绍 安装 创建控制器 例子 样例项目 介绍 OData在其官网的定义是: 允许以一种 简单且标准的方式创建和使用可查询的.可互操作的RESTful APIs. 在ABP中也可以 ...
- ABP理论学习之MVC视图
返回总目录 本篇目录 介绍 AbpWebViewPage基类 介绍 ABP通过Abp.Web.Mvc Nuget包集成了MVC视图.因此你可以像常规那样创建MVC视图. AbpWebViewPage基 ...
- ABP官方文档翻译 6.1.1 MVC控制器
ASP.NET MVC控制器 介绍 AbpController基类 本地化 其他 过滤器 异常处理和结果包装 审计日志 验证 授权 工作单元 介绍 ABP通过Abp.Web.Mvc nuget包集成到 ...
- ABP理论学习之Javascript API(理论完结篇)
返回总目录 本篇目录 Ajax Notification Message UI block和busy 事件总线 Logging 其他工具功能 说在前面的话 不知不觉,我们送走了2015,同时迎来了20 ...
- ABP理论学习之N层架构
返回总目录 自从写这个系列博客之后,发现很多园友还是希望有个直接运行的demo,其实在github上就有官方的demo,我直接把这demo的链接放到这里吧,另外,我分析,这些找不到demo的同学,很可 ...
- ABP理论学习之依赖注入
返回总目录 本篇目录 什么是依赖注入 传统方式产生的问题 解决办法 依赖注入框架 ABP中的依赖注入基础设施 注册 解析 其他 ASP.NET MVC和ASP.NET Web API集成 最后提示 什 ...
- ABP理论学习之日志记录
返回总目录 本篇目录 服务端 获取Logger 基类中的Logger 配置 客户端 服务端 ABP使用的是Castle Windsor的日志记录设备.它可以和不同的日志类库一起工作,比如Log4Net ...
- ABP理论学习之工作单元(Unit of Work)
返回总目录 本篇目录 公共连接和事务管理方法 ABP中的连接和事务管理 仓储类 应用服务 工作单元 工作单元详解 关闭工作单元 非事务的工作单元 工作单元方法调用其它 工作单元作用域 自动保存 IRe ...
随机推荐
- **crontab的使用方式介绍和no crontab for root 提示的处理
crontab的使用方式介绍 定时任务参数详解如下: crontab -l | crontab -e www.2cto.com #*/30 * * * * ntpdate 1 ...
- Blender 之 Splash 代码分析
注:以下内容基于 Blender 2.7x 版本工程,其它低版本可能有改动. Blender启动完成时,会出现一个画面,英文叫Splash.默认是打开的,可以在设置里关闭.在文件菜单里点击用户首选项( ...
- 关于Knockout的开始
最近看了汤姆大叔的Knockout,感到MVVM的神奇,也许这就是以后编程的方式,最直观的感觉就是层次更分明了. 绑定,模型转换,监控,在我来说,这算是编程上的一个转变,在以后我做不定期的更新一些MV ...
- 5 Convert Sorted List to Binary Search Tree_Leetcode
Given a singly linked list where elements are sorted in ascending order, convert it to a height bala ...
- CozyRSS开发记录18-番外之Atom1.0的支持
CozyRSS开发记录18-番外之Atom1.0的支持 1.对CozyRSS.Syndication批判一番 由于我工作的主要开发语言是c++,所以会看到我的c#代码写得非常朴素,很多语法糖都没有用上 ...
- php字符串匹配
$a='abcdef'; $b='abc'; similar_text($a,$b,$num); $num=3;
- [Leetcode] Bulls and Cows
You are playing the following Bulls and Cows game with your friend: You write a 4-digit secret numbe ...
- HDU 5008 Boring String Problem(后缀数组+二分)
题目链接 思路 想到了,但是木写对啊....代码 各种bug,写的乱死了.... 输出最靠前的,比较折腾... #include <cstdio> #include <cstring ...
- linux常用命令总结
du -sh * 当前目录下所有文件占用空间大小,df 空间占用 top 资源使用情况 M 根据驻留内存大小进行排序 tail 1.tail -f filename说明:监视filename文件的尾 ...
- java cookie 工具类
package com.xxx.xxx.xxx.xxx; import java.net.URLDecoder; import java.net.URLEncoder; import javax.se ...