
- MVC 框架教程
- MVC 框架 - 首页
- MVC 框架 - 简介
- MVC 框架 - 架构
- MVC 框架 - ASP.NET 表单
- MVC 框架 - 第一个应用程序
- MVC 框架 - 文件夹
- MVC 框架 - 模型
- MVC 框架 - 控制器
- MVC 框架 - 视图
- MVC 框架 - 布局
- MVC 框架 - 路由引擎
- MVC 框架 - 操作过滤器
- 高级示例
- MVC 框架 - Ajax 支持
- MVC 框架 - 捆绑
- 异常处理
- MVC 框架有用资源
- 问答
- MVC 框架 - 快速指南
- MVC 框架 - 资源
- MVC 框架 - 讨论
MVC 框架 - 操作过滤器
在 ASP.NET MVC 中,控制器定义操作方法,并且这些操作方法通常与 UI 控件(例如单击按钮或链接等)具有一对一的关系。例如,在我们之前的示例之一中,UserController 类包含 UserAdd、UserDelete 等方法。
但是,很多时候我们希望在特定操作之前或之后执行某些操作。为了实现此功能,ASP.NET MVC 提供了一个功能,可以在控制器的操作方法上添加操作前和操作后行为。
过滤器类型
ASP.NET MVC 框架支持以下操作过滤器:
操作过滤器 - 操作过滤器用于实现控制器操作执行之前和之后执行的逻辑。我们将在本章中详细介绍操作过滤器。
授权过滤器 - 授权过滤器用于为控制器操作实现身份验证和授权。
结果过滤器 - 结果过滤器包含在执行视图结果之前和之后执行的逻辑。例如,您可能希望在视图呈现到浏览器之前修改视图结果。
异常过滤器 - 异常过滤器是最后一种运行的过滤器类型。您可以使用异常过滤器来处理控制器操作或控制器操作结果引发的错误。您还可以使用异常过滤器来记录错误。
操作过滤器是最常用的过滤器之一,用于执行其他数据处理,或操作返回值或取消操作执行或在运行时修改视图结构。
操作过滤器
操作过滤器是可以应用于控制器部分或整个控制器的附加属性,以修改操作执行的方式。这些属性是从 System.Attribute 派生的特殊 .NET 类,可以附加到类、方法、属性和字段。
ASP.NET MVC 提供以下操作过滤器:
输出缓存 - 此操作过滤器将控制器操作的输出缓存指定时间。
处理错误 - 此操作过滤器处理控制器操作执行时引发的错误。
授权 - 此操作过滤器使您能够限制对特定用户或角色的访问。
现在,我们将看到代码示例,以将这些过滤器应用于示例控制器 ActionFilterDemoController。(ActionFilterDemoController 仅用作示例。您可以在任何控制器上使用这些过滤器。)
输出缓存
示例 - 指定返回值缓存 10 秒。
public class ActionFilterDemoController : Controller { [HttpGet] OutputCache(Duration = 10)] public string Index() { return DateTime.Now.ToString("T"); } }
处理错误
示例 - 当控制器触发错误时,将应用程序重定向到自定义错误页面。
[HandleError] public class ActionFilterDemoController : Controller { public ActionResult Index() { throw new NullReferenceException(); } public ActionResult About() { return View(); } }
使用上述代码,如果在操作执行期间发生任何错误,它将找到 Views 文件夹中名为 Error 的视图并将其呈现给用户。
授权
示例 - 仅允许授权用户登录应用程序。
public class ActionFilterDemoController: Controller { [Authorize] public ActionResult Index() { ViewBag.Message = "This can be viewed only by authenticated users only"; return View(); } [Authorize(Roles="admin")] public ActionResult AdminIndex() { ViewBag.Message = "This can be viewed only by users in Admin role only"; return View(); } }
使用上述代码,如果您尝试在未登录的情况下访问应用程序,它将抛出一个类似于以下屏幕截图中显示的错误。
