19

ASP.NET MVCコントローラーを条件付きで無効にする最良の方法は何ですか?

web.configの値が「true」の場合はコントローラーのアクションにアクセスし、「false」の場合は404にアクセスしたい

自分の属性を書くべきですか?

更新:アクションフィルター属性よりも洗練されたソリューションを探しています(定数パラメーターではないパラメーターを属性コンストラクターに渡す機能を備えています)

    [AttributeUsage(AttributeTargets.Class, AllowMultiple = true, Inherited = true)]
    public class CloseForSomeSettingAttribute : ActionFilterAttribute
    {
        public override void OnActionExecuting(ActionExecutingContext filterContext)
        {
            bool mySettingValue = MySettingManager.GetMySettingValue();

            if (mySettingValue)
            {
                filterContext.Result = new HttpStatusCodeResult(404);
            }
            else
            {
                base.OnActionExecuting(filterContext);
            }
        }
    }
4

3 に答える 3

6

最も簡単なのは、おそらくカスタム アクション フィルターを実装することです。

http://www.asp.net/mvc/tutorials/older-versions/controllers-and-routing/understanding-action-filters-cs

404 が返される結果となる、そのコントローラーに一致するルートを条件付きで追加することもできます。

于 2012-07-23T00:52:59.453 に答える