操作篩選器的某些可能用途包括:
asp.net mvc 支援以下型別的操作篩選器:
篩選器執行順序
篩選器按下列順序執行:
授權篩選器
操作篩選器
響應篩選器
異常篩選器
例如,授權篩選器最先執行,異常篩選器最後執行。
在每個篩選器型別中,order 值將指定執行順序。
在每個篩選器型別和順序中,scope 模擬值將指定篩選器的順序。
此列舉將定義以下篩選器範圍值(按它們執行的順序):
first
global
controller
action
last
例如,其 order 屬性設定為 0 且篩選器範圍設定為 first 的操作篩選器將在其 order 屬性設定為 0 且篩選器範圍設定為 action 的操作篩選器之前執行。
未定義具有相同型別、順序和範圍的篩選器的執行順序
例項:建立自定義操作篩選器
回顧一下asp.net mvc 操作篩選器的執行順序,框架將先呼叫操作篩選器的 onactionexecuting 方法,然後再呼叫以操作篩選器特性標記的任意操作方法。
同樣,該框架將在操作方法完成後呼叫 onactionexecuted 方法。
呼叫 onresultexecuting 方法後,要立即呼叫您的操作返回的 actionresult 例項。
執行結果後,緊接著就要呼叫 onresultexecuted 方法。
這些方法對於執行日誌記錄、快取輸出結果之類的操作非常有用。
建立乙個名為loggingfilterattribute的類
跟上面所說一樣該類繼承了actionfilterattribute表示操作特性的基類。
**
public
class
loggingfilterattribute : actionfilterattribute
public
override
void
onactionexecuted(actionexecutedcontext filtercontext)
}
此處我們只是設定了兩個值,放在頁面上做對照,完全可以換成日誌功能。
呼叫操作篩選器
在controller中新建index方法在上面加上剛剛定義的篩選標誌[loggingfilter]
////
get: /person/
[loggingfilter]
public
actionresult index()
view**
<
h2>
@viewdata["mess1"]
h2>
<
h2>
@viewdata["mess2"]
h2>
這一結果完全驗證了,篩選器的工作順序。onactionexecuting-->action-->onactionexecuted
如果有多個篩選的話我們可以用order來將他們一一列出順序。預設order為-1.
////
get: /person/
[loggingfilter(order =1
)] [loggingfilter1(order =0
)]
public
actionresult index()
對指定的控制器採用不同的篩選
在asp.net mvc controller 類中我們可以重寫的 onactionexecuting 和 onactionexecuted 方法。
這樣重寫這些方法中的乙個或全部時,我們的邏輯將在該控制器的所有操作方法之前或之後執行。
此功能類似於操作篩選器,但方法侷限於控制器範圍。
此時我們就不需要單獨去在action上面去呼叫他了,因為該controller 中的篩選已經被重寫。並且僅屬於該controller 。
**
[nonaction]protected
override
void
onactionexecuting(actionexecutingcontext filtercontext)
[nonaction]
protected
override
void
onactionexecuted(actionexecutedcontext filtercontext)
MVC的過濾器
過濾器分類 action過濾器 view結果渲染過濾器 全域性錯誤異常過濾器 身份驗證過濾器 1.action過濾器 在action執行之前和執行之後分別幹一些事 介面 iactionfilter 2.view結果渲染過濾器 介面 iactionfilter attributeusage attri...
MVC3 0的學習小總結
學習首先得找個好老師,這邊部落格講的相當不錯,可供參考 碰到的問題 2 新增model層的時候基本是跟以前的寫法類似,只是如果需要表單要驗證之類的,需要重寫,以下可以直接訪問這個部落格,3 controllers層,需要你寫控制器,自己編造些值,直接寫個方法呼叫展示。未來資料庫訪問也是在這裡寫的 4...
servlet過濾器學習筆記
過濾器作用 預先處理需要訪問的頁面,比如登入檢測,編碼轉換等 基礎使用 傳統的xml方式需要在web.xml裡配置,配置方式與servlet類似 現在的annotation配置比較方便 分類,過濾器有五種 request 對請求進行攔截,具體攔截可以自行指定,也可以萬用字元指定,比如 do,但是如果...