在MVC项目中过滤器,最好把这些过滤器类放到一个文件夹中(Filters),然后过滤器文件的名称也是有规定的,格式应该为xxxAttribute,否则在控制器或控制器的方法中是无法进行调用过滤器的,在过滤器中需要继承FilterAttribute类,并且实现IActionFilter以及IResultFilter接口,这两个接口中实现的方法分别是OnActionExecuted,OnActionExecuting与OnResultExecuted,
OnResultExecuting,前两个方法负责在相应开始和相应结束,而后两个方法负责结果发送开始以及结果发送结束,它们的执行顺序是:OnActionExecuting => OnActionExecuted => OnResultExecuting =>OnResultExecuted.在控制器添加过滤器标记时,过滤器的名字应该是[IsLogin],不需要带attribute,因为它是一种规范。
现在搞一个案例,获取上下文的放到数据库,表格式:
create table Log(
content varchar(50) parmary key,
logtime datetime2)
我们在要在页面进行响应的时候进行记录日志,所以我们应在OnActionExecuted中进行操作代码如下:
public class MyLoginAttribute : FilterAttribute, IActionFilter, IResultFilter
{
BookShopEntities book = new BookShopEntities();
public void OnActionExecuted(ActionExecutedContext filterContext)
{
// filterContext.HttpContext.Response.Write("OnActionExecuted");
string cname = filterContext.ActionDescriptor.ControllerDescriptor.ControllerName;//控制器的名称
string bname = filterContext.ActionDescriptor.ActionName;//方法名称
string aname = filterContext.HttpContext.Request.HttpMethod;//请求方式
book.MSysLogs.Add(new MSysLog()
{
logtime = DateTime.Now,
content = $"通过了{aname}方式调用了{cname}控制器{bname}方法"
});
book.SaveChanges();
}
}

写这篇文章时候入的坑:我的表中没有主键,所以创建EF或者更新EF的时候没有这个表.... 

说一说MVC的过滤器(一)的更多相关文章

  1. 使用ASP.NET MVC操作过滤器记录日志(转)

    使用ASP.NET MVC操作过滤器记录日志 原文地址:http://www.singingeels.com/Articles/Logging_with_ASPNET_MVC_Action_Filte ...

  2. 爱上MVC系列~过滤器实现对响应流的处理

    回到目录 MVC的过滤器相信大家都用过,一般用来作权限控制,因为它可以监视你的Action从进入到最后View的渲染,整个过程ActionFilter这个过滤器都参与了,而这给我们的开发带来了更多的好 ...

  3. ASP.NET MVC : Action过滤器(Filtering)

    http://www.cnblogs.com/QLeelulu/archive/2008/03/21/1117092.html ASP.NET MVC : Action过滤器(Filtering) 相 ...

  4. MVC 自定义过滤器/特性来实现登录授权及验证

    最近悟出来一个道理,在这儿分享给大家:学历代表你的过去,能力代表你的现在,学习代表你的将来. 十年河东十年河西,莫欺少年穷 学无止境,精益求精    最近在做自学MVC,遇到的问题很多,索性一点点总结 ...

  5. [翻译] 使用ASP.NET MVC操作过滤器记录日志

    [翻译] 使用ASP.NET MVC操作过滤器记录日志 原文地址:http://www.singingeels.com/Articles/Logging_with_ASPNET_MVC_Action_ ...

  6. MVC 授权过滤器 AuthorizeAttribute

    using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.We ...

  7. MVC自定义过滤器,自定义Area过滤器,自定义Controller,Action甚至是ViewData过滤器

    实现MVC自定义过滤器,自定义Area过滤器,自定义Controller,Action甚至是ViewData过滤器 MVC开发中几种以AOP方式实现的Filters是非常好用的,默认情况下,我们通过A ...

  8. mvc全局过滤器和httpmodule的执行顺序

    根据http管线模型,请求先通过httpmodule,再通过httphandler,之后再进入mvc的过滤器 另外参考:MVC如何在Pipeline中接管请求的? http://www.cnblogs ...

  9. 实现MVC自定义过滤器,自定义Area过滤器,自定义Controller,Action甚至是ViewData过滤器

    MVC开发中几种以AOP方式实现的Filters是非常好用的,默认情况下,我们通过App_Start中的FilterConfig来实现的过滤器注册是全局的,也就是整个应用程序都会使用的,针对单独的Fi ...

  10. ASP.NET MVC动作过滤器

    ASP.NET MVC提供了4种不同的动作过滤器(Aciton Filter). 1.Authorization Filter 在执行任何Filter或Action之前被执行,用于身份验证 2.Act ...

随机推荐

  1. unity Tab键实现切换输入框功能

    using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; ...

  2. 关于<软件>的定义

    百度百科: 软件是一系列按照特定顺序组织的计算机数据和指令的集合.一般来讲软件被划分为系统软件.应用软件和介于这两者之间的中间件. 国标中的定义: 与计算机系统操作有关的计算机程序.规程.规则,以及可 ...

  3. 向mysql中导入向导时如表xlsx

    如果出现这种问题那么是因为没有打开这个文件,如果想导入这个文件需要到开这个文件,然后再导入

  4. MongoDB与SpringBoot整合(支持事务)

    1.创建SpringBoot工程,选择 Web.MonogDB 依赖,pom如下: <parent> <groupId>org.springframework.boot< ...

  5. Navicat Premium 12.1.12.0安装与激活

    转载自:Navicat Premium 12.1.12.0安装与激活 作者:丿记忆灬永殇丨 链接:https://www.jianshu.com/p/5f693b4c9468 navicat12112 ...

  6. 创建线程的一般方式和匿名内部类方式对比——继承thread类,重写run()方法

    第一种:继承thread类,重写run()方法 一般方式:Demo01.java /** * 创建线程的第一种方式:继承thread类,重写run()方法 * * @author :liuqi * @ ...

  7. Django缓存机制

    缓存介绍 在动态网站中,用户所有的请求,服务器都会去数据库中进行相应的增删改查,渲染模板,执行业务逻辑,最后生成用户看到的页面. 当一个网站的用户访问量很大的时候,每一次的后台操作,都会消耗很多的服务 ...

  8. Django合集

    Django基础 Django--简介 Django--web框架简介 浅析uWSGI.uwsgi.wsgi Django--url(路由)配置 Django--模板层 Django--视图层 Dja ...

  9. PHP通过经纬坐标计算两个地址的距离

    <?php /** *求两个已知经纬度之间的距离,单位为米 * *@param lng1,lng2 经度 * *@param lat1,lat2 纬度 * *@return float 距离,单 ...

  10. [转]XModem协议

    出处:XModem协议 XModem协议介绍:XModem是一种在串口通信中广泛使用的异步文件传输协议,分为XModem和1k-XModem协议两种,前者使用128字节的数据块,后者使用1024字节即 ...