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);
}
}
}
Button component can be enabled or disabled by giving disabled property. To disable Button component, the disabled property can be set as true .
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With