簡體   English   中英

OnActionExecuted代碼,用於.NET MVC應用程序中的所有HTTP GET操作

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM