dotnet -MVC filter

 

1、过滤器种类:

action Filter:action 过滤器,action执行之前或之后执行过滤器中的逻辑

Key class:关键类

IActionFiler :定义了两个方法:action 执行之前和执行之后

 

执行顺序:action before - action - action end  view result before - view - view end

 

使用方法:Filter 有全局过滤器

### C# 中过滤器 (Filter) 的用法与实现 在 C# 编程中,过滤器通常用于筛选集合中的数据项。通过 LINQ(Language Integrated Query),可以方便地实现这一功能。LINQ 提供了一种简洁而强大的语法来操作集合对象。 #### 使用 `Where` 方法进行过滤 C# 中最常见的过滤方法是使用 LINQ 的 `Where` 函数。此函数接受一个谓词作为参数,并返回满足条件的元素集合[^1]。 以下是基于列表的一个简单示例: ```csharp using System; using System.Collections.Generic; using System.Linq; class Program { static void Main() { List<int> numbers = new List<int> { 1, 2, 3, 4, 5 }; // 过滤出大于等于 3 的数字 IEnumerable<int> filteredNumbers = numbers.Where(n => n >= 3); foreach (var number in filteredNumbers) { Console.WriteLine(number); } } } ``` 上述代码展示了如何利用 Lambda 表达式定义过滤逻辑并应用到整数列表上。 #### 自定义过滤器类 除了内置的方法外,还可以创建自定义过滤器以增强灵活性。例如,在 ASP.NET Core MVC 或 Web API 应用程序中,可以通过继承特定基类(如 `ActionFilterAttribute`)来自定义行为[^3]。 下面是一个简单的日志记录过滤器例子: ```csharp using Microsoft.AspNetCore.Mvc.Filters; using System.Diagnostics; public class LogExecutionTimeAttribute : ActionFilterAttribute { private Stopwatch _stopwatch; public override void OnActionExecuting(ActionExecutingContext context) { _stopwatch = Stopwatch.StartNew(); } public override void OnActionExecuted(ActionExecutedContext context) { _stopwatch.Stop(); var controllerName = context.RouteData.Values["controller"]; var actionName = context.RouteData.Values["action"]; var elapsedMilliseconds = _stopwatch.ElapsedMilliseconds; Debug.WriteLine($"Controller: {controllerName}, Action: {actionName} executed in {elapsedMilliseconds} ms."); } } ``` 这段代码展示了一个属性型过滤器,它可以在控制器动作执行前后插入额外处理逻辑。 #### 性能测试工具推荐 如果需要评估不同过滤策略之间的性能差异,则可考虑引入第三方库——BenchmarkDotNet 来完成精确测量工作[^2]。其安装命令如下所示: ```bash dotnet add package BenchmarkDotNet ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值