Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Conditionally disable ASP.NET MVC Controller

What is the best way to disable ASP.NET MVC controller conditionally?

I want to have an access to the controller actions if some value in web.config is "true" and 404 if it's "false"

Should I write my own attribute?

UPDATE: Looking for more elegant solution than action filter attribute (with an ability to pass not constant parameter to attribute constructor)

    [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);
            }
        }
    }
like image 846
Dmitry Khryukin Avatar asked Jul 22 '12 23:07

Dmitry Khryukin


People also ask

How to enable and disable button from controller in MVC?

Button component can be enabled or disabled by giving disabled property. To disable Button component, the disabled property can be set as true .


1 Answers

The easiest would probably be to implement a custom action filter:

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

You can also conditionally add a route that matches that controller that would result in a 404 being returned.

like image 123
igz168 Avatar answered Oct 05 '22 23:10

igz168