0

web.config キーが true に設定されている場合、すべてのビューのメンテナンス ページのような既定のページを表示する方法は?

キーが false の場合、通常のビューを表示します。

各コントローラーでコードを繰り返したくないので、_ViewStart や _Layout ページなど、これを定義できる共通の場所を探しています。

ありがとう。

4

1 に答える 1

0

OnActionExecuting へのアクセスを可能にする独自の ActionFilterAttribute と基本コントローラーを作成できます。次に、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 に答える