ASP.NET MVC 拦截器

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Web.Mvc;


namespace Rhythmk.Sercurity.Attribute
{
    [AttributeUsage(AttributeTargets.Class|AttributeTargets.Method)]
   public  class MeAttribute : FilterAttribute, IAuthorizationFilter, IActionFilter
    {
        //IAuthorizationFilter
        public void OnAuthorization(AuthorizationContext filterContext)
        {
            filterContext.RequestContext.HttpContext.Response.Write("OnAuthorization<br/>");
        }

        //IActionFilter
        public void OnActionExecuted(ActionExecutedContext filterContext)
        {
            filterContext.RequestContext.HttpContext.Response.Write("OnActionExecuted<br/>");
        }

        //IActionFilter
        public void OnActionExecuting(ActionExecutingContext filterContext)
        {
            filterContext.Controller.ViewBag.CurrentData = "http://Rhythmk.cnblogs.com";
            if (filterContext.ActionParameters.ContainsKey("user"))
            {
                filterContext.ActionParameters["user"] = "UserID=rhythmk";
            }

            filterContext.RequestContext.HttpContext.Response.Write("OnActionExecuting<br/>");
        }
    }
}

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Web.Security;
using Rhythmk.Sercurity.Attribute;

namespace MvcApp2.Controllers
{
    public class HomeController : Controller
    {
        [Me]  // http://rhythmk.cnblogs.com
        public ActionResult Index(string user)
        {
            HttpContext.Response.Write(string.Format("ViewBag.CurrentData:{0}<br/>", ViewBag.CurrentData));
            HttpContext.Response.Write("Home/Index<br/>");

            HttpContext.Response.Write(string.Format("user:{0}<br/>",user));

            return View();
        }

       
    }
}

输出结果:

OnAuthorization
OnActionExecuting
ViewBag.CurrentData:http://Rhythmk.cnblogs.com
Home/Index
user:UserID=rhythmk
OnActionExecuted

异常拦截:

public class ActionErrorAttribute : ActionFilterAttribute, IExceptionFilter
    {
        /// <summary>
        /// 过滤异常信息
        /// </summary>
        /// <param name="filterContext"></param>
        public void OnException(ExceptionContext filterContext)
        {
            Exception error = filterContext.Exception;

           
            filterContext.ExceptionHandled = true; //设置异常已经处理
            filterContext.RequestContext.HttpContext.Response.Write(error.Message);
        }
    }

 

 

使用:

 [ActionError]
 public ActionResult TestError()
 {
     int i = int.Parse("rhythmk");
    return Content("OK");
 }

 

        

转载于:https://my.oschina.net/u/926126/blog/302370

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值