ABP官方文档翻译 6.1.1 MVC控制器

时间:2023-12-27 20:18:37

ASP.NET MVC控制器

介绍

  ABP通过Abp.Web.Mvc nuget包集成到了ASP.NET MVC Controllers。你可以像往常一样创建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();
}
}

  你需要设置LocalizationSourceName才能使用L方法。可以在你的控制器基类里设置,这样就不用为每一个控制器重复设置了。

其他

  你也可以使用预注入的AbpSession,EventBus,PermissionManager,PermissionChecker,SettingManager,FeatureManager,FeatureChecker,LocalizationManager,Logger,CurrentUnitOfWork基础属性等。

过滤器

异常处理和结果包装

  所有的异常都是自动处理、记录并给客户端返回一个合适的响应。参见异常处理文档了解更多。

  如果返回类型时JsonResult(或异步actions的Task<JsonResult>), ABP会默认包装action的结果。

  你可以通过为controllers或actions或从全局的启动配置使用WrapResultDontWrapResult特性来改变异常处理和包装。

审计日志

  AbpMvcAuditFilter用来集成审计日志系统。它默认记录所有actions的所有请求(如果审计没有被禁用)。你可以为actions和controllers使用AuditedDisableAuditing特性来控制审计日志。

验证

  AbpMvcValidationFilter自动检查ModelState.IsValid,如果action没通过验证则阻止其执行。输入DTO的验证实现参见校验文档

授权

  你可以给controllers或actions使用AbpMvcAutorize特性来禁止未授权的用户使用你的controllers和actions。示例:

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

  你可以为controllers和actions定义AllowAnonymous特性来废除验证/授权。AbpController定义了IsGranted方法作为检查权限的快捷方法。

  参见授权文档了解更多。

工作单元

  AbpMvcUowFilter用来集成工作单元系统。它自动在action执行前可以使一个工作单元并在action结束后完成工作单元(如果没有异常抛出)。

  你可以使用UnitOfWork特性来控制action的UOW的行为。你也可以使用启动配置来更改所有actions的默认工作单元特性。

防伪造

  AbpAntiForgeryMvcFilter用来自动保护MVC actions的POST、PUT和DELETE请求免受CSRF/XSRF的攻击。参见CSRF文档了解更多。

模型绑定器

  AbpMvcDateTimeBinder用来格式化DateTime(和Nullable<DateTime>)输入,它使用Clock.Normalize方法。

返回主目录