013. MVC5過濾器

微軟提供了4中過濾器:

1.Action過濾器: 在Action方法執行之前和Action方法執行之后, 會執行此過濾器中的代碼. 比如在執行public ActionResult Index()方法之前或之后; 也可以說是在方法執行前或執行后;

接口: IactionFilter??? 抽象類名: ActionFilterAttribute?? 添加一個實現類 MyActionFilterAttribute.cs , 這里這個Attribute后綴必須添加

2. View視圖結果渲染過濾器:在視圖渲染之前或之后做一點處理;

接口: IresultFilter

3. 全局錯誤異常過濾器: 當整個網站出現異常, 就來執行此過濾器中代碼

接口:

4. 校驗過濾器(身份驗證過濾器):不常用


?

使用Action過濾器:

添加一個MyActionFilterAttribute類, 繼承ActionFilterAttribute? , 一般不去實現接口, 而是去繼承這個抽象類, 而這個繼承類應該以Attribute作為后綴, 右鍵Models目錄→添加一個MyActionFilterAttribute類:

?

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;namespace MasterDemo.Models
{//如果想要全局的標簽都要起到作用, 則需要再在這個類上也打上一個標簽, 只要把 AllowMultiple = false, 改成true, 就能使該過濾器全局起到作用, 下面這個僅僅是他的默認特性[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, Inherited = true, AllowMultiple = false)]public class MyActionFilterAttribute: System.Web.Mvc.ActionFilterAttribute{public string Name{get; set;}public override void OnActionExecuting(ActionExecutingContext filterContext){base.OnActionExecuting(filterContext);filterContext.HttpContext.Response.Write("我是執行前打出來的" + Name);}public override void OnActionExecuted(ActionExecutedContext filterContext){base.OnActionExecuted(filterContext);filterContext.HttpContext.Response.Write("我是執行后打出來的" + Name);}public override void OnResultExecuting(ResultExecutingContext filterContext){base.OnResultExecuting(filterContext);filterContext.HttpContext.Response.Write("我是在結果執行前打出來的" + Name);}public override void OnResultExecuted(ResultExecutedContext filterContext){base.OnResultExecuted(filterContext);filterContext.HttpContext.Response.Write("我是結果執行后打出來的" + Name);}}
}

控制器的引用:

?

運行結果:

Index.cshtml內容:

@{ViewBag.Title = "Home Page";
}<div><h1>ASP.NET</h1></div><div><h2>Getting started</h2>
</div>

?運行結果:

?

打到類上, 此時訪問Index頁面還是上面的運行結果, 如果訪問About頁面, 結果則是? 我是執行前打出來的Home/我是打在類上的特性; 類上的特性適用于整個類內的所有方法, 但是如果該方法上有了特性, 則以該方法上的特性為主

?全局過濾器:

可以用來實現判斷用戶是否登錄, 驗證用戶身份

截圖:

?

代碼:

using System.Web;
using System.Web.Mvc;namespace MasterDemo
{public class FilterConfig{//要使用全局過濾器, 則必須在此文件中配置全局過濾器, 全局過濾器, 對每一個類都生效, 當然需要將全局過濾器的類打上前面提到的特性, 比如這里要引用/Models/MyActionFilterAttribute的過濾器, 則需要在此添加, 并且/Models/MyActionFilterAttribute類的前面也要添加新的特性, 這個特性在抽象類上其實也是有的public static void RegisterGlobalFilters(GlobalFilterCollection filters){filters.Add(new HandleErrorAttribute());//添加全局過濾器, 此時訪問此程序內所有的頁面都將先加載此過濾器, 那么這個過濾器可以用來實現判斷用戶是否登錄filters.Add(new Models.MyActionFilterAttribute() { Name="我是全局"});}}
}

?全局過濾器被調用的時間:

看下圖, 可以啟動下調試, 看看全局過濾器被調用的時間:

?

轉載于:https://www.cnblogs.com/wxylog/p/6414481.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/255357.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/255357.shtml
英文地址,請注明出處:http://en.pswp.cn/news/255357.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Val編程-讀取漢字

Val編程-讀取漢字 Val編程中&#xff0c;對于漢字的讀取不是很友好&#xff0c;利用fileget直接讀取記事本產生的文件字符串會導致亂碼的產生。因為Val只支持使用utf-8進行編碼&#xff0c;因此讀取的文本需要進行utf-8格式轉換。 在GBK中&#xff0c;漢字占兩個字節。并且…

【pyqt5學習】——菜單欄(QMenu())、工具欄QToolBar學習

目錄 1、菜單欄&#xff08;QMenu()&#xff09;——一般在窗口頂部 1&#xff09;創建菜單欄步驟 2&#xff09;信號與方法 3&#xff09;實操 2、工具欄——一般在菜單欄下方 1&#xff09;創建步驟 2&#xff09;方法與信號 信號&#xff1a; 方法&#xff1a; 3&am…

Java核心技術及面試指南 異常部分的面試題歸納以及答案

4.2.4.1 throw和throws有什么差別&#xff1f;異常&#xff08;Exception&#xff09;和錯誤&#xff08;Error&#xff09;有什么差別&#xff1f; throw語句表示拋出異常&#xff0c;由方法體內的語句處理。throws語句用在方法聲明后面&#xff0c;表示如果拋出異常&#xff…

win7win10 配置wlan熱點

win7 & win10 系統自帶wlan功能&#xff0c;配置方法如下&#xff1a; 命令行輸入: 1. netsh wlan set hostednetwork mode allow ssid "Haha" key12345678 2. netsh wlan start hostednetwork netsh wlan show hostednetwork 轉載于:https://www.cnblogs.com/…

java---Socket編程出現的異常種類

.java.net.SocketTimeoutException.這個異常比較常見&#xff0c;socket超時。一般有2個地方會拋出這個&#xff0c;一個是connect的時候&#xff0c;這個超時參數由connect(SocketAddress endpoint,int timeout)中的后者來決定&#xff0c;還有就是setSoTimeout(int timeout)&…

【pyqt5學習】——利用Pyqt5連接打印機(QtPrintSupport、QPrintDialog、QPageSetupDialog)

目錄 1、利用QtPrintSupport直接連接打印機——不常用 1&#xff09;基本知識 2&#xff09;完整代碼案例 3&#xff09;結果 2、 打印對話框QPrintDialog、打印設置對話框QPageSetupDialog 1&#xff09;彈出打印設置對話框 2&#xff09;彈出打印對話框 注&#xff1a…

Val編程-按鍵響應模式

由于Val是通過語句gotoxy函數來進行光標移動的&#xff0c;不支持觸摸屏與鼠標&#xff0c;因此對于其界面編程有很大的局限。 一般有下面幾種模式來進行編程。 1.按鍵響應模式&#xff08;中斷模式&#xff09; 2.輪詢模式 一般推薦使用按鍵響應模式。其原理是對于有按鍵按下…

[Android]SQLite的使用

Android 數據存儲提供了四種存儲方式&#xff1a; Shared Preferences 使用鍵值對&#xff08;Map(key, value)&#xff09;來存儲數據 Internal Storage 內部存儲&#xff0c;存儲在設備內存的 私人數據 External Storage 外部存儲&#xff0c;存儲在外部設備的 公共數據…

第一百四十五節,JavaScript,同步動畫

JavaScript&#xff0c;同步動畫 將上一節的&#xff0c;移動透明動畫&#xff0c;修改成可以支持同步動畫&#xff0c;也就是可以給這個動畫方法多個動畫任務&#xff0c;讓它同時完成 原理&#xff1a; 向方法里添加一個屬性&#xff0c;這個屬性是一個對象&#xff0c;同步動…

Exchange Server 2016管理系列課件39.新建本地移動請求

場景通過新建本地移動請求&#xff0c;可以很方便的將用戶郵箱從一個數據庫遷移到另外一個數據庫。1&#xff09;跨平臺郵件遷移&#xff1b;&#xff08;低exchange遷移到高版本exchange&#xff09;2&#xff09;數據庫平衡與優化&#xff1b;&#xff08;企業當中&#xff0…

【數據庫學習】——【匯總】MySQL數據庫下載與安裝(Msi文件安裝和免安裝版本)、Navicat下載與安裝

目錄 1、MySQL數據庫下載與安裝 1&#xff09;MySQL數據庫下載 MySQL官網 MySQL數據庫下載 2&#xff09;MySQL 通過msi文件安裝 3&#xff09;MySQL免安裝版本使用 1&#xff09;將免安裝包移動到安裝的文件夾位置&#xff1b; 2&#xff09;新建data文件夾 3&#xff…

Val編程-文本操作

Val系統相對于高級語言來說&#xff0c;對于文本操作的功能相當的弱。 一般的文本&#xff08;文件夾&#xff09;操作有&#xff1a; 1.新建文本&#xff0c; 2.刪除文本&#xff0c; 3.新建文件夾&#xff0c; 4.刪除文件夾&#xff0c; 5.文本重命名&#xff0c; 6.文…

Linux高級編程--01.vi命令

VI是Linux/Unix下標配的一個純字符界面的文本編輯器。由于不支持鼠標功能&#xff0c;也沒有圖形界面&#xff0c;相關的操作都要通過鍵盤指令來完成&#xff0c;需要記憶大量命令。因此很多人不大喜歡它&#xff0c;但同時由于鍵盤的方式往往比鼠標來得快&#xff0c;一旦熟練…

【數據庫學習】——糾錯:mysql Authentication plugin ‘caching_sha2_password‘ is not supported

目錄 1、環境介紹 2、問題描述 3、原因分析 4、 解決方案 1&#xff09;方法一&#xff1a;直接改成mysql_native_password驗證方式 2&#xff09;方案二&#xff1a; 利用sql命令將驗證機制修改 ① 打開命令行窗口——cmd ② 登錄mysql數據庫 ③ 查看不同用戶名的身份…

xcode中用pods管理第三方庫轉

安裝pods &#xff1a;http://www.cnblogs.com/wangluochong/p/5567082.html 史上最詳細的CocoaPods安裝教程 --------------------------------------------- 第一步&#xff1a;Cmmand&#xff0b;空格&#xff0c;搜索"終端"&#xff0c;使用cd命令進入到我們項目…

Val編程-界面編程

由于示教盒是一個黑白的分辨率為&#xff08;14*40&#xff09;的液晶屏&#xff0c;用戶交互不是很好&#xff0c;界面不友好。而且沒有鼠標導航與觸摸屏。 界面編程函數 1.void cls() 2.void title(string sText) 3.void put(string sText), void put(num nValue) 4.void put…

【機器學習筆記四】分類算法 - 邏輯回歸

參考資料 【1】 Spark MLlib 機器學習實踐 【2】 統計學習方法 1、Logistic分布 設X是連續隨機變量&#xff0c;X服從Logistic分布是指X具有下列分布函數和密度函數 &#xff0c;。其中u為位置參數&#xff0c;γ為形狀參數。如下圖&#xff1a; 分布函數以(u,1/2)為中心…

FPFH+ICP點云配準

A, UniformSampling降噪B, ISS計算關鍵點, FPFH特征在FeatureCloud::setInputCloud中讀入點云,并調用processInput進行處理:processInput處理包括: 1, computeSurfaceNormals () 使用NormalEstimation計算得到表面法向量2, computeLocalFeatures () FPFHEstimationKdTreeIS…

【python 學習】——pycharm終端解釋器和Python解釋器配置

目錄 1、pycharm終端運行的時候前面帶有PS&#xff0c;是什么意思&#xff0c;怎么變成cmd? 1&#xff09;File——settings 2&#xff09;tools——terminal——shellPath 2、pycharm怎么切換不同的Python解釋器&#xff1f; 1&#xff09;File——settings 2&#xff09…

在linux下實現mysql自動備份數據

使用的系統為CentOS&#xff0c;mysql版本為5.6 備份功能主要利用以下功能實現&#xff1a; mysql命令中的mysqldump命令 linux下腳本編寫 linux下crontab定時任務的使用 首先確定你要存放腳本的目錄和存放備份數據的目錄 首先進行以下修改&#xff08;因為在命令行或者腳本中寫…