Asp.net mvc:使用ActionFilterAttribute记录操作日志
2016-08-26 10:05
1016 查看
1.ActionFilterAttribute的基本介绍:
引用命名空间:using system.web.mvc,这很重要,在system.web.Http.Filter下也有ActionFilterAttribute类,但有着很大的区别。
ActionFilterAttribute是Action过滤类,可在action执行之前,action执行之后,和提交操作结果之前和执行操作结果之后执行。
2.构造操作日志的类
3.构造对应的ActionFilterAttribute类,实现方法OnActionExecuted()可在Action执行之后记录操作日志。
3.应用构造的ActionFilterAttribute类,在需要记录操作日志的Action之前加入即可。
引用命名空间:using system.web.mvc,这很重要,在system.web.Http.Filter下也有ActionFilterAttribute类,但有着很大的区别。
ActionFilterAttribute是Action过滤类,可在action执行之前,action执行之后,和提交操作结果之前和执行操作结果之后执行。
2.构造操作日志的类
public class OperateLog { /// <summary> /// 主键Id /// </summary> [DisplayName("主键Id")] public Guid Id { get; set; } /// <summary> /// 操作员Id /// </summary> [DisplayName("操作员Id")] public Guid OperatorId { get; set; } /// <summary> /// 操作员 /// </summary> [DisplayName("操作员")] public Operator Operator { get; set; } /// <summary> /// 操作时间 /// </summary> [DisplayName("操作时间")] public DateTime OperateTime { get; set; } /// <summary> /// 具体操作 /// </summary> [DisplayName("具体操作")] public string Operate { get; set; } /// <summary> /// 重要级别 /// </summary> [DisplayName("重要级别")] public int Level { get; set; } /// <summary> /// 重要级别 /// </summary> [NotMapped] [DisplayName("重要级别")] public ImportantLevel LevelEnum { get { return (ImportantLevel)Level; } set { Level = (int)value; } } /// <summary> /// 描述 /// </summary> [DisplayName("描述")] public string Description { get; set; } /// <summary> /// 重要级别 /// </summary> public enum ImportantLevel { 一般操作 = 0, 危险操作 = 1 } }
3.构造对应的ActionFilterAttribute类,实现方法OnActionExecuted()可在Action执行之后记录操作日志。
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, AllowMultiple = false)] public class OperationLogAttribute: ActionFilterAttribute { /// <summary> /// 操作日志 /// </summary> /// <param name="operate">具体操作</param> public OperationLogAttribute(string operate,ImportantLevel level=ImportantLevel.一般操作 ,string description=null) { this.Operate = operate; Level = level; Description = description; } public override void OnActionExecuted(ActionExecutedContext filterContext) { if (Common.Common.CurrentUser == null) return; AdministrativeSupervisionContext db = new AdministrativeSupervisionContext(); OperateLog operateLog = new OperateLog(); operateLog.Id = Guid.NewGuid(); operateLog.OperateTime = DateTime.Now; operateLog.Operate = Operate; operateLog.Description = Description; operateLog.LevelEnum = Level; operateLog.OperatorId = Common.Common.CurrentUser.Id; db.OperateLogs.Add(operateLog); db.SaveChanges(); base.OnActionExecuted(filterContext); } /// <summary> /// 操作员Id /// </summary> public Guid OperatorId { get; set; } /// <summary> /// 操作时间 /// </summary> public DateTime OperateTime { get; set; } /// <summary> /// 具体操作 /// </summary> public string Operate { get; set; } /// <summary> /// 危险等级 /// </summary> public ImportantLevel Level { get; set; } /// <summary> /// 描述 /// </summary> public string Description { get; set; } }
3.应用构造的ActionFilterAttribute类,在需要记录操作日志的Action之前加入即可。
[Attributes.OperationLog("删除日志",OperateLog.ImportantLevel.危险操作)] public virtual async Task<ActionResult> DeleteConfirmed(Guid id) { try{ OperateLog operateLog = await db.OperateLogs.FindAsync(id); db.OperateLogs.Remove(operateLog); await db.SaveChangesAsync(); //return RedirectToAction("Index"); return Json(new JsonResultModel { Status = (int)JsonResultStatus.Success, Message = "删除成功" }); }catch{ return Json(new JsonResultModel { Status = (int)JsonResultStatus.Error, Message = "删除时发生错误" }); } }
相关文章推荐
- [翻译] 使用ASP.NET MVC操作过滤器记录日志
- [翻译] 使用ASP.NET MVC操作过滤器记录日志
- ASP.NET MVC使用ActionFilterAttribute实现权限限制的方法(附demo源码下载)
- ASP.NET MVC ActionFilterAttribute的执行顺序
- ASP.NET MVC 利用ActionFilterAttribute来做权限等
- asp.net mvc 5 利用ActionFilterAttribute实现权限过滤
- 在ASP.NET MVC中使用Log4Net进行多种HttpCode日志的记录
- asp.net MVC利用ActionFilterAttribute过滤关键字的方法
- [转]Creating an ASP.NET MVC OutputCache ActionFilterAttribute
- ASP.NET MVC NonActionAttribute使用说明
- ASP.NET MVC 利用ActionFilterAttribute来做权限等
- How to use Asp.Net Mvc ActionFilterAttribute for form authentication
- ASP.NET MVC 利用ActionFilterAttribute来做权限等
- 在ASP.NET MVC 3中使用日志记录组件Elmah和NLog
- 如何使用Apache log4net库与ASP.NET MVC 5日志记录
- ASP.NET MVC 利用ActionFilterAttribute来判断用户是否登陆等等
- 在ASP.NET MVC中使用Log4Net记录异常日志,出错时导向到静态页
- ASP.NET MVC NonActionAttribute使用说明
- (asp.net mvc学习)ASP.NET MVC ActionFilter的学习与使用
- 创建一个ASP.NET MVC OutputCache ActionFilterAttribute