Conditionally disable ASP.NET MVC Controller
.net, asp.net, asp.net-mvc, asp.net-mvc-3, c#
Solution
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.
Problem
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); } } } ```