0

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

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

请注意,我不想在每个控制器中重复代码,我正在寻找一个共同的地方,比如可以定义它的 _ViewStart 或 _Layout 页面。

谢谢。

4

1 回答 1

0

您可以创建自己的 ActionFilterAttribute 和基本控制器,这使您可以访问 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);
    }
}

这一切都在我的脑海中,但我认为它应该工作,如果它不希望它会给你一些想法。

于 2012-07-05T16:29:15.773 回答