当条件为真时显示默认视图,asp.net mvc3

时间:2012-07-05 16:10:01

标签: asp.net-mvc-3

如果web.config键设置为true,如何显示所有视图的维护页面等默认页面?

如果键为false,则显示常规视图。

请注意,我不想重复每个控制器中的代码,并且正在寻找一个常见的位置,例如_ViewStart或_Layout页面,可以定义它。

感谢。

1 个答案:

答案 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);
    }
}

这一切都是我的头脑,但我认为它应该有用,如果它不希望它会给你一些想法。