Asp.net

在任何操作之前執行程式碼

  • February 19, 2016

我有以下要求:

在對我的網頁的每個請求中,無論使用者試圖呼叫哪個操作,我都需要呼叫一些程式碼來檢查資源是否到位。如果是,那麼一切都很好,動作方法應該被正常呼叫。

但是,如果此資源不可用,我希望所有請求都返回一個單獨的頁面,要求使用者從可用資源列表中選擇另一個資源。

那麼是否可以在任何可以選擇取消對操作方法的呼叫並執行其他操作的操作方法之前執行一種方法?

查看全域操作過濾器(從 asp.net mvc 3 開始可用):http: //msdn.microsoft.com/en-us/library/gg416513%28v=vs.98%29.aspx

基本上,在您的 Global.asax 中,您可以在應用程序啟動期間(在 Application_Start() 中)全域註冊過濾器:

GlobalFilters.Filters.Add(new MyActionFilterAttribute());

然後,您可以覆蓋 OnActionExecuting 方法,並使用 RedirectToRouteResult 設置 Result 屬性。

protected override void OnActionExecuting(ActionExecutingContext filterContext)
{
   if (IsMyResourceAvailable())
   {
       filterContext.Result = new RedirectToRouteResult(
           new RouteValueDictionary {
               { "Controller", "YourControllerName" },
               { "Action", "YourAction" } 
           });
   }

   base.OnActionExecuting(filterContext);
}

引用自:https://stackoverflow.com/questions/8709174