Tutorialsteacher

关注我们

文章
  • C#
  • C# 面向对象编程
  • ASP.NET Core
  • ASP.NET MVC
  • LINQ
  • 控制反转 (IoC)
  • Web API
  • JavaScript
  • TypeScript
  • jQuery
  • Angular 11
  • Node.js
  • D3.js
  • Sass
  • Python
  • Go 语言
  • HTTPS (SSL)
  • 正则表达式
  • SQL
  • SQL Server
  • PostgreSQL
  • MongoDB
Entity Framework Extensions - 提升 EF Core 9
  批量插入
  批量删除
  批量更新
  批量合并
  • 全部
  • C#
  • MVC
  • Web API
  • Azure
  • IIS
  • JavaScript
  • Angular
  • Node.js
  • Java
  • Python
  • SQL Server
  • SEO
  • 创业
  • 效率

如何在 ASP.NET MVC 中创建自定义过滤器?

您可以通过实现要为其创建自定义过滤器的相应过滤器接口,并派生 FilterAttribute 类来创建自定义过滤器属性,从而将该类用作属性。

例如,实现 IExceptionFilter 和 FilterAttribute 类来创建自定义异常过滤器。同样,实现 IAuthorizationFilter 接口和 FilterAttribute 类来创建自定义授权过滤器。

示例:自定义异常过滤器
class MyErrorHandler : FilterAttribute, IExceptionFilter
{
    public override void IExceptionFilter.OnException(ExceptionContext filterContext)
    {
        Log(filterContext.Exception);

        base.OnException(filterContext);
    }

    private void Log(Exception exception)
    {
        //log exception here..
 
    }
}

或者,您也可以派生内置过滤器类并重写适当的方法来扩展内置过滤器的功能。

让我们通过派生内置的 HandleErrorAttribute 类并重写 OnException 方法来创建一个自定义异常过滤器,以记录每个未处理的异常,如下所示。

示例:自定义异常过滤器
class MyErrorHandler : HandleErrorAttribute
{
    public override void OnException(ExceptionContext filterContext)
    {
        Log(filterContext.Exception);

        base.OnException(filterContext);
    }

    private void Log(Exception exception)
    {
        //log exception here..
 
    }
}

您现在可以在全局级别、控制器或操作方法级别应用 MyErrorHandler 属性,就像我们应用 HandleError 属性一样。

示例:将自定义操作过滤器应用于控制器
[MyErrorHandler]
public class HomeController : Controller
{
    public ActionResult Index()
    {
        return View();
    }

}
TUTORIALSTEACHER.COM

TutorialsTeacher.com 是您权威的技术教程来源,旨在通过循序渐进的方法,指导您掌握各种网络和其他技术。

我们的内容旨在帮助所有级别的学习者轻松快速地掌握技术。通过访问此平台,即表示您已阅读并同意遵守我们的使用条款和隐私政策,这些条款和政策旨在保护您的体验和隐私权。

[email protected]

关于我们使用条款隐私政策
copywrite-symbol

2024 TutorialsTeacher.com. (v 1.2) 版权所有。