文档章节

ASP.NET MVC 拦截器

rhythmk
 rhythmk
发布于 2014/08/16 16:37
字数 181
阅读 24
收藏 0
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");
 }

 

        

© 著作权归作者所有

共有 人打赏支持
下一篇: 存储过程调用
rhythmk
粉丝 1
博文 62
码字总数 40987
作品 0
广州
私信 提问
我使用Asp.net MVC WebAPI支持OData协议进行分页操作的笔记(第二篇)

在阅读这篇文章的时候,我想你已经看完第一篇文章啦·也有可能跟我一样,现在正在使用它Asp.net WebAPI为我们干活儿。可能是服务分页查询接口,也可能是其它操作,遇到了一些小问题。有问题,...

点儿都不扯
2015/05/14
0
0
MVC、MVP以及Model2[下篇]

[上篇]通过采用MVC模式,我们可以将可视化UI元素的呈现、UI处理逻辑和业务逻辑分别定义在View、Controller和Model中,但是对于三者之间的交互,MVC并没有进行严格的限制。最为典型的就是允许...

长平狐
2012/09/04
208
0
[Share]7月9号的精选好文链接

原文地址:http://www.joycode.com/scottgu/archive/2010/07/26/116035.joy [原文发表地址]:July 9th Links: ASP.NET, ASP.NET MVC, jQuery, Silverlight, WPF, VS 2010 [原文发表时间]:2......

吞吞吐吐的
2017/01/04
0
0
How ASP.NET MVC Works?[持续更新中…]

一、ASP.NET + MVC IIS与ASP.NET管道 MVC、MVP以及Model2[上篇] MVC、MVP以及Model2[下篇] ASP.NET MVC是如何运行的[1]: 建立在“伪”MVC框架上的Web应用 ASP.NET MVC是如何运行的[2]: URL路...

长平狐
2012/09/04
50
0
ASP.NET MVC 5 入门指南汇总

经过前一段时间的翻译和编辑,我们陆续发出12篇ASP.NET MVC 5的入门文章。其中大部分翻译自ASP.NET MVC 5 官方教程,由于本系列文章言简意赅,篇幅适中,从一个web网站示例开始讲解,全文最终...

葡萄城控件技术团队
2014/06/11
0
0

没有更多内容

加载失败,请刷新页面

加载更多

如何有效的背单词

转眼间到了大三快要结束了。英语四级考了三次了,每次都220多分。成绩很稳定,但离四级线还有200多分。学校规定如果过不了四级线,就拿不到学士学位证。没有学位证就找不到好工作,找不到好工...

我是菜鸟我骄傲
18分钟前
0
0
导出表格

https://blog.csdn.net/hhzzcc_/article/details/80419396

Js_Mei
42分钟前
0
0
Ubuntu中安装Elasticsearch

1.安装jre elasticsearch是使用java开发的搜索引擎,因此其运行依赖于java runtime environment,我们在这里不使用Oracel的官方jre,改为使用open-jre。 运行环境: ubuntu:18.04 jre:openj...

cloes
59分钟前
0
0
nginx rails 详细站点配置入门教程

Ruby on Rails 是一个用于开发数据库驱动的网络应用程序的完整框架。Rails基于MVC(模型- 视图- 控制器)设计模式。从视图中的Ajax应用,到控制器中的访问请求和反馈,到封装数据库的模型,R...

xiangyunyan
今天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部