如果web.config键设置为true,如何显示所有视图的维护页面等默认页面?
如果键为false,则显示常规视图。
请注意,我不想重复每个控制器中的代码,并且正在寻找一个常见的位置,例如_ViewStart或_Layout页面,可以定义它。
感谢。
答案 0 :(得分:0)
您可以创建自己的ActionFilterAttribute和基本Controller,它可以让您访问OnActionExecuting。然后,您可以测试是否设置了Web.Config值(可能在您首次启动Web应用程序时将其加载到Application变量中),如果已设置,则将Controller和Action属性设置为维护页面。然后所有的控制器,而不是继承自标准控制器,将改为从控制器继承,除了维护控制器,它仍然可以继承正常的控制器。
例如:
[RedirectToMaintenancePage]
public class MyController : Controller
{
}
对于典型的控制器:
public class SampleController : MyController
{
... Your actions ...
}
然后创建一个名为RedirectToMaintenancePageAttribute.cs的类:
public class RedirectToMaintenancePageAttribute : ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
If Web.config says to go to Maintenance page then...
{
filterContext.Result = RedirectToRouteResult("route name") // Or some other redirect
return;
}
// else
base.OnActionExecuting(filterContext);
}
}
这一切都是我的头脑,但我认为它应该有用,如果它不希望它会给你一些想法。