日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

16、ASP.NET MVC入门到精通——MVC过滤器

發布時間:2025/4/5 asp.net 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 16、ASP.NET MVC入门到精通——MVC过滤器 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本系列目錄:ASP.NET MVC4入門到精通系列目錄匯總

在ASP.NET MVC中有四種過濾器類型

?Action

1、在ASP.NET MVC項目中,新建文件夾Filter,然后新建類MyCustormFilter,繼承自ActionFilterAttribute類,我們來看下ActionFilterAttribute類有如下四個方法,從命名我應該就可以看出他們的執行時機。

public class MyCustormFilter:ActionFilterAttribute{public override void OnActionExecuting(ActionExecutingContext filterContext){filterContext.HttpContext.Response.Write("Action執行前");base.OnActionExecuting(filterContext);}public override void OnActionExecuted(ActionExecutedContext filterContext){filterContext.HttpContext.Response.Write("Action執行后");base.OnActionExecuted(filterContext);}}

2、對于過濾器,我們可以把它們加在三個地方,一個是控制器上面(控制器下面的所有Action),一個是Action上面(指定標識的Action),另一個就是全局位置(所有控制器中的Action)。這里我只演示在Action上面加

?????? [MyCustormFilter]
??????? public ActionResult Index()
??????? {
??????????? return View();
??????? }
?????? public ActionResult Index1()
?????? {
?????????? return View();
}???

3、build然后運行

Result

?1、新建類TestResultFilter,繼承ActionFilterAttribute

public class TestResultFilter:ActionFilterAttribute{/// <summary>/// 加載 "視圖" 前執行/// </summary>/// <param name="filterContext"></param>public override void OnResultExecuting(System.Web.Mvc.ResultExecutingContext filterContext){filterContext.HttpContext.Response.Write("加載視圖前執行 OnResultExecuting <br/>");base.OnResultExecuting(filterContext);}/// <summary>/// 加載"視圖" 后執行/// </summary>/// <param name="filterContext"></param>public override void OnResultExecuted(System.Web.Mvc.ResultExecutedContext filterContext){filterContext.HttpContext.Response.Write("加載視圖后執行 OnResultExecuted <br/>");base.OnResultExecuted(filterContext);}}

2、這里我把TestResultFilter過濾器加在控制器上面

[TestResultFilter]public class FilterTestController : Controller{[MyCustormFilter]public ActionResult Index(){return View();}public ActionResult Index1(){return View();}}

3、運行看下結果

注意:Result過濾器,無論Action的返回類型為什么(甚至void)都將執行。

RouteData中保存了當前請求匹配的路由信息和路由對象

修改MyCustormFilter.cs

public override void OnActionExecuting(ActionExecutingContext filterContext){//1.獲取獲取請求的類名和方法名string strController = filterContext.RouteData.Values["controller"].ToString();string strAction = filterContext.RouteData.Values["action"].ToString();//2.另一種方式 獲取請求的類名和方法名string strAction2 = filterContext.ActionDescriptor.ActionName;string strController2 = filterContext.ActionDescriptor.ControllerDescriptor.ControllerName;filterContext.HttpContext.Response.Write("Action執行前</br>");filterContext.HttpContext.Response.Write("控制器:" + strController + "</br>");filterContext.HttpContext.Response.Write("控制器:" + strController2+"</br>");filterContext.HttpContext.Response.Write("Action:" + strAction + "</br>");filterContext.HttpContext.Response.Write("Action:" + strAction2 + "</br>");base.OnActionExecuting(filterContext);}

?

AuthorizeAttribute

1、? 新建TestAuthorizeAttribute

/// <summary>/// 授權過濾器 --在Action過濾器前執行/// </summary>public class TestAuthorizeAttribute:AuthorizeAttribute{public override void OnAuthorization(AuthorizationContext filterContext){filterContext.HttpContext.Response.Write("<br/>OnAuthorization<br/>");//注釋掉父類方法,因為父類里的 OnAuthorization 方法會調用asp.net的授權驗證機制!//base.OnAuthorization(filterContext);} }

2、在控制器FilterTest中的Index上添加TestAuthorize標記

[MyCustormFilter][TestAuthorize]public ActionResult Index(){return View();}

運行看下結果:

Exception

1、新建TestHandleError.cs

/// <summary>/// 異常處理 過濾器/// </summary>public class TestHandleError : HandleErrorAttribute{public override void OnException(ExceptionContext filterContext){//1.獲取異常對象Exception ex = filterContext.Exception;//2.記錄異常日志//3.重定向友好頁面filterContext.Result = new RedirectResult("~/error.html");//4.標記異常已經處理完畢filterContext.ExceptionHandled = true;base.OnException(filterContext);}}

2、在Action上面加TestHandleError

[TestHandleError]public ActionResult GetErr(){int a = 0;int b = 1 / a;return View();}

注意:通常這樣的異常處理我們是放在全局過濾器上面的。

public class FilterConfig{public static void RegisterGlobalFilters(GlobalFilterCollection filters){//filters.Add(new HandleErrorAttribute());//添加全局過濾器filters.Add(new TestHandleError());}}

?

總結

以上是生活随笔為你收集整理的16、ASP.NET MVC入门到精通——MVC过滤器的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 久久午夜国产精品 | 性感美女在线观看 | 国产免费观看视频 | 成人免费大全 | 精品国产乱码一区二区 | ass极品国模人体欣赏 | 国产日本亚洲 | 日本成人一区二区 | 极品白嫩少妇无套内谢 | 成人午夜激情影院 | 国产亚洲精品久久久久四川人 | 欧美群妇大交群 | 国产精品作爱 | 欧美绿帽合集videosex | 国产午夜精品一区二区三区四区 | 综合视频一区二区 | 国产一区二区三区www | 欧美做受高潮1 | 伊人久久久久久久久久 | 在线观看av中文字幕 | 九色在线观看 | 40一50一60老女人毛片 | 男生看的污网站 | 亚洲精选久久久 | 久久av一区二区三区漫画 | 日韩电影福利 | 伊人色影院 | 另类专区欧美 | 美女福利一区 | 欧洲裸体片 | 色综合啪啪 | 国产乱码一区二区三区在线观看 | 99re这里只有精品在线 | 竹菊影视一区二区三区 | 欧美一区二区三区不卡视频 | 亚洲同性gay激情无套 | 男女做的视频 | 久久久不卡 | 成年人黄色一级片 | 国产精品h | 69xxx少妇按摩视频 | 国产成人精品综合在线观看 | 日本激情一区二区 | 亚洲男人的天堂在线观看 | 欧美激情精品久久久久久变态 | 麻豆91视频| 国产美女无遮挡永久免费观看 | 污视频在线观看网址 | 韩日av在线播放 | 夫妻淫语绿帽对白 | 国产中文一区 | 亚洲国产果冻传媒av在线观看 | 国产男女猛烈无遮挡免费视频 | 日韩中文一区二区 | 91欧美激情一区二区三区成人 | 精品久久久久久久久久久久 | 在线观看你懂得 | 麻豆专区| 成人av在线看 | 国产亚洲精品成人无码精品网站 | 少妇被又大又粗又爽毛片久久黑人 | 久久久久久久久免费看无码 | a资源在线观看 | 久久嫩草精品久久久久 | 亚洲av毛片 | 91视频在线免费看 | 国产毛片毛片毛片毛片毛片 | 男女视频免费看 | 97久久国产亚洲精品超碰热 | 国产精品成人va在线观看 | 黄色片网站免费观看 | 隔壁人妻偷人bd中字 | 色综合天天干 | 涩涩久久 | 亚洲巨乳在线 | h片在线观看免费 | av鲁丝一区鲁丝二区鲁丝三区 | 免费国产黄色 | 老司机深夜福利视频 | 亚洲图区综合 | 日本三级一区二区 | 欧美视频在线不卡 | 美女被出白浆 | 熟妇人妻一区二区三区四区 | 国产一区日韩 | 综合xx网| 风间由美av在线 | 久久av高潮av无av萌白 | 一级一片免费播放 | 人人插人人看 | 蜜臀av无码精品人妻色欲 | 欧美性猛交ⅹxx | 国语对白91 | 永久精品 | 亚洲天堂999 | 日韩av二区 | 欧美日韩电影一区二区 | 不卡的av| 午夜极品视频 |