第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何有選擇地禁用ASP.Net MVC中的全局篩選器

如何有選擇地禁用ASP.Net MVC中的全局篩選器

開滿天機 2019-12-27 09:33:52
我為我打開和關(guān)閉NHibernate會話的所有控制器動作設(shè)置了全局過濾器。這些操作中有95%需要某些數(shù)據(jù)庫訪問權(quán)限,但5%則不需要。是否有任何簡單的方法可以針對這5%禁用此全局過濾器。我可以反過來,只裝飾需要數(shù)據(jù)庫的操作,但這將需要更多工作。
查看完整描述

3 回答

?
慕娘9325324

TA貢獻1783條經(jīng)驗 獲得超4個贊

您可以編寫一個標記屬性:


public class SkipMyGlobalActionFilterAttribute : Attribute

{

}

然后在全局操作過濾器中測試操作中是否存在此標記:


public class MyGlobalActionFilter : ActionFilterAttribute

{

    public override void OnActionExecuting(ActionExecutingContext filterContext)

    {

        if (filterContext.ActionDescriptor.GetCustomAttributes(typeof(SkipMyGlobalActionFilterAttribute), false).Any())

        {

            return;

        }


        // here do whatever you were intending to do

    }

}

然后,如果要從全局過濾器中排除某些操作,只需用marker屬性裝飾它即可:


[SkipMyGlobalActionFilter]

public ActionResult Index()

{

    return View();

}


查看完整回答
反對 回復 2019-12-27
?
MMTTMM

TA貢獻1869條經(jīng)驗 獲得超4個贊

雖然,達林·迪米特洛夫(Darin Dimitrov)接受的答案很好,而且效果很好,但是對我來說,這里建立的最簡單,最有效的答案。


您只需要在邏輯開始之前向?qū)傩蕴砑右粋€布爾屬性并對其進行檢查:


public class DataAccessAttribute: ActionFilterAttribute

{

    public bool Disable { get; set; }


    public override void OnActionExecuting(ActionExecutingContext filterContext)

    {

        if (Disable) return;


        // Your original logic for your 95% actions goes here.

    }

}

然后按照5%的操作使用,如下所示:


[DataAccessAttribute(Disable=true)]

public ActionResult Index()

{            

    return View();

}


查看完整回答
反對 回復 2019-12-27
  • 3 回答
  • 0 關(guān)注
  • 485 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號