MVC5 Attribute(特性)

AuthorizeAttribute:一般用来判断权限

ActionFilterAttribute:方法执行前后动作

OutputCacheAttribute:输出缓存设置

注:我们创建名称的时候请带上 Attribute

AuthorizeAttribute:创建

namespace MyWebApi.Models
{
    using System;
    using System.Web;
    using System.Web.Mvc;

    /// <summary>
    /// 检查登陆已经权限问题
    /// </summary>
    public class MyAuthorizeAttribute : AuthorizeAttribute
    {
        public int status = 1;//1:登陆有权,2:没有登入,3:登陆无权限
        /// <summary>
        /// 权限检查的入口
        /// </summary>
        /// <param name="httpContext">http的基类</param>
        /// <returns></returns>
        protected override bool AuthorizeCore(HttpContextBase httpContext)
        {
            //这里写逻辑  利用Cookies 判断用户是否登入已经登入是否有权限,然后来给 status 赋值
            #region  我们也可以在使用的时候传入指定的用户以及角色来判断
            string[] users = Users.Split(‘,‘);
            string[] roles = Roles.Split(‘,‘);
            #endregion
            return status ==1;
        }

        /// <summary>
        /// 当检查入口返回false会进入到这里
        /// </summary>
        /// <param name="filterContext"></param>
        protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext)
        {
            if (filterContext == null)
            {
                throw new ArgumentNullException("filterContext");
            }
            else
            {
                if (status == 2) //没有登陆的页面
                {
                    filterContext.Result = new RedirectResult("");
                }
                else if (status == 3) //没有权限访问的页面
                {
                    filterContext.Result = new RedirectResult("");
                }
            }
        }
    }
}

使用:

ActionFilterAttribute:创建

namespace MyWebApi.Models
{
    using System.Web.Mvc;

    /// <summary>
    /// 方法的过滤
    /// </summary>
    public class MyFilterAttribute:ActionFilterAttribute
    {
        /// <summary>
        /// 在方法执行之前
        /// </summary>
        /// <param name="filterContext"></param>
        public override void OnActionExecuting(ActionExecutingContext filterContext)
        {
            //逻辑操作
            filterContext.Result = new RedirectResult("");//跳转页面
        }
        /// <summary>
        /// 在方法之后返回之前
        /// </summary>
        /// <param name="filterContext"></param>
        public override void OnActionExecuted(ActionExecutedContext filterContext)
        {
            //逻辑操作
            filterContext.Result = new RedirectResult("");//跳转页面
        }
        /// <summary>
        /// 在返回之前
        /// </summary>
        /// <param name="filterContext"></param>
        public override void OnResultExecuting(ResultExecutingContext filterContext)
        {
            //逻辑操作
            filterContext.Result = new RedirectResult("");//跳转页面
        }
        /// <summary>
        /// 在返回之后
        /// </summary>
        /// <param name="filterContext"></param>
        public override void OnResultExecuted(ResultExecutedContext filterContext)
        {
            //逻辑操作
            filterContext.Result = new RedirectResult("");//跳转页面
        }
    }
}

使用:

OutputCacheAttribute:输出缓存不必我们去创建,System.Web.Mvc 命名空间中已存在,我们可以直接使用,在设置的时间内刷新页面不会刷新内容

特性上设置参数:

web.config配置:

原文地址:https://www.cnblogs.com/Sea1ee/p/9759487.html

时间: 2024-08-06 03:47:24

MVC5 Attribute(特性)的相关文章

Attribute特性验证模型model

数据验证我们往往分为前台验证和后台验证,而我们的后台验证每到一个方法中就要去验证一次,这样的代码想想都难以维护,这篇我们这篇文章就是为了解决这样的问题.用attribute 这个特性来解决这样的问题 也将在这篇文章中告诉大家如何编写. 调用方式: UserService applictionService = container.Resolve<UserService>(); applictionService.AddUser(new User() { Name = "1"

mvc中利用Attribute特性来进行进行简单的登陆验证

前段时间一直比较忙.好不容易忙完.闲的没事干,就捣腾了下mvc(ef),因为以前都是用三层框架来进行开发,mvc用的也不是很多...众所周知,在三层里面我们一般都是建一个基类,然后在基类里面写验证登录方法,然后在需要验证登录的页面继承这个基类即可...但到了mvc里面所有的视图页面的操作都转移到了控制器了..这个时候我们在按照三层的方式建一个基类来继承验证登录,就没办法走通了...今天我就给大家来展示一个利用Attribute特性来验证登录.如果还有不知道这个东东的,可以百度一下Attribut

.net学习之Attribute特性和EF关键知识点

一.Attribute特性/标签1.Attribute用来对类.属性.方法等标注额外的信息,贴一个标签简单的说,定制特性Attribute,本质上就是一个类,它为目标元素提供关联附加信息,并在运行时以反射的方式来获取附加信息.[Obsolete("此方法已过时")]public void SayHi(){ }加上Obsolete特性,当鼠标放到调用方法上的时候,就会提示此方法已过时2.Attribute自定义特性类Attribute就是类,Attribute类名一般都以Attribut

.NET进阶篇03-Reflection反射、Attribute特性

知识需要不断积累.总结和沉淀,思考和写作是成长的催化剂 内容目录 一.概述二.反射1.反射使用2.创建对象3.调用方法4.字段属性三.特性四.总结 一.概述 反射其实无处不在,我们用VS进行调试时候,查看成员列表.修改变量值都是通过反射来实现的.我们写业务代码可能很少去写反射,但理解反射是从菜鸟到大牛的必经之路.无论EF还是ASP.NET,几乎所有框架都用到反射.反射动态创建对象.动态赋值.动态调用方法. 前面简单介绍过.NET的第一次编译,会编译成IL(中间语言),反射就是利用IL在运行时获取

ASP.NET MVC5 新特性:Attribute路由使用详解

1.什么是Attribute路由?怎么样启用Attribute路由? 微软在 ASP.NET MVC5 中引入了一种新型路由:Attribute路由,顾名思义,Attribute路由是通过Attribute来定义路由.当然,MVC5也支持以前定义路由的方式,你可以在一个项目中混合使用这两种方式来定义路由. 在以前的版本中我们通常在 RouteConfig.cs 文件中通过以下方式来定义路由: routes.MapRoute( name: "ProductPage", url: &quo

ASP.NET MVC5 新特性:Attribute路由使用详解 (转载)

1.什么是Attribute路由?怎么样启用Attribute路由? 微软在 ASP.NET MVC5 中引入了一种新型路由:Attribute路由,顾名思义,Attribute路由是通过Attribute来定义路由.当然,MVC5也支持以前定义路由的方式,你可以在一个项目中混合使用这两种方式来定义路由. 在以前的版本中我们通常在 RouteConfig.cs 文件中通过以下方式来定义路由: routes.MapRoute( name: "ProductPage", url: &quo

IOC容器特性注入第五篇:查找(Attribute)特性注入

前面几篇文章分别介绍:程序集反射查找,特性,容器,但它们之间贯穿起来,形成查找Attribute注入IOC容器,就得需要下面这个类帮忙: 1.DependencyAttributeRegistrator(依赖特性注入类),有它才能在引擎初始化的时候 查找Attribute 进行注入 public class DependencyAttributeRegistrator { #region Fields private readonly ITypeFinder _finder; private r

C#基础系列——Attribute特性使用

前言:上篇 C#基础系列--反射笔记 总结了下反射得基础用法,这章我们来看看C#的另一个基础技术--特性. 1.什么是特性:就博主的理解,特性就是在类的类名称.属性.方法等上面加一个标记,使这些类.属性.方法等具有某些统一的特征,从而达到某些特殊的需要.比如:方法的异常捕捉,你是否还在某些可能出现异常的地方(例如数据库的操作.文件的操作等)经常使用try...catch.这个时候如果使用特性,就可以大大减少方法里面的try...catch的使用.你只需要定义一个专门捕捉异常的特性类Excepti

关于C# 中的Attribute 特性

摘要:纠结地说,这应该算是一篇关于Attribute 的笔记,其中的一些思路和代码借鉴了他人的文笔(见本文底部链接).但是,由于此文对Attribute 的讲解实在是叫好(自夸一下 ^_^),所以公之于众,希望能对大家有所帮助. Attribute与Property 的翻译区别 Attribute 一般译作"特性",Property 仍然译为"属性". Attribute 是什么 Attribute 是一种可由用户自由定义的修饰符(Modifier),可以用来修饰各