zoukankan      html  css  js  c++  java
  • MVC3动作记录机制

    把网站重要的操作步骤记录下来,在ASP.NET MVC中,可以通过动作过滤器来实现。

    首先在项目目录中新建一个"ActionFilter"目录,以集中管理所有的ActionFilter属性类,再新建一个ActionLogAttribute动作过滤器属性。

    其中我的数据库表ActionLog结构如下图:

    ActionLogAttribute类的代码如下:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.Mvc;
    using ChellonaMobileStationElectricity.Models;
    
    namespace ChellonaMobileStationElectricity.ActionFilter
    {
        public class ActionLogAttribute:ActionFilterAttribute
        {
            public string Description { get; set; }
            StationElectricEntities db;
            IMemberRepository _memberRepository;
            public ActionLogAttribute()
            {
                db = new StationElectricEntities();
                _memberRepository = new MemberRepository();
            }
    
            public override void OnActionExecuting(ActionExecutingContext filterContext)
            {
                ActionLog log = new ActionLog()
                {
                    UserID = _memberRepository.GetMemberByAccount(filterContext.HttpContext.User.Identity.Name).UserID,
                    Action = filterContext.RouteData.Values["controller"] + "." + filterContext.RouteData.Values["action"],
                    ClientIP = filterContext.HttpContext.Request.UserHostAddress,
                    DesCription = this.Description
                };
                db.AddToActionLog(log);
                db.SaveChanges();
            }
        }
    }

    然后,我们在Controller里面就可以使用了,如下:

        [HttpPost]
            [ChellonaMobileStationElectricity.ActionFilter.ActionLog(Description="新增用户")]
            public ActionResult Create(FormCollection collection)
            {
                if (ModelState.IsValid)
                {
                    User user = new User();
                    user.UserName = collection["UserName"];
                    user.PassWord = _memberRepository.HashPassword(collection["PassWord"]);
                    user.ChName = collection["ChName"];

    查下数据库,已有数据,成功。

  • 相关阅读:
    设计模式-1-概要(c#版)
    UML图示说明
    阿里云SLB双机IIS多站点负载均衡部署笔记
    阿里云分布式关系数据库DRDS笔记
    一些小经验
    NOSQL场景梳理
    内核linux-3.4.2支持dm9000
    构建根文件系统
    u-boot-1.1.6移植之dm9000
    移植u-boot-1.1.6(原创)
  • 原文地址:https://www.cnblogs.com/bianlan/p/2481496.html
Copyright © 2011-2022 走看看