[英]OnActionExecuted code for all HTTP GET actions in .NET MVC Application
為.NET MVC應用程序中的所有HTTP GET操作創建自定義OnActionExecuted代碼的最佳方法是什么?
您是否會創建一個ActionFilter,或者創建一個基本控制器,並且在這兩種方法中,是否可以僅針對GET請求觸發操作過濾器?
我最初的想法是編寫如下的基本控制器,但這是最好的方法,還是我錯過了什么?
protected override void OnActionExecuted(ActionExecutedContext filterContext)
{
if (Request.HttpMethod == "GET")
{
...
}
}
你的代碼很好。 我會用:
if (string.Equals(Request.HttpMethod, "GET", StringComparison.OrdinalIgnoreCase))
此外,如果您想為'GET'請求創建幾個ActionFilters,您可以創建公共基礎ActionFilter類,然后從中派生所有具體的操作過濾器。
控制器本身是一個過濾器,因此您可以使用控制器,或者您可以使用單獨的類/過濾器。 你必須分析哪一個適合你。 通過將邏輯放在控制器中,您可能會丟失單元測試,因此如果測試/ SOC是重要的問題,那么我可能建議選擇一個封裝邏輯的單獨類。 此外,如果應用程序中有兩個不同的基本控制器(很少),則可以避免代碼重復。
最好的方法是使用基本控制器或在操作上聲明的自定義操作過濾器。 最好使用控制器工廠全局注冊動作過濾器,既不需要繼承基本控制器,也不需要在任何控制器/動作上添加動作過濾器。 動作過濾器在global.asax
聲明的自定義DefaultControllerFactory
派生中分配給Controller ActionInvoker
。
這篇博客文章對實現這種方法非常有用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.