11

のような機能を見つける可能性はありますPage_Loadか? MVC アプリケーションがあり、ページがロードまたはリロードされるたびにコードを実行するか、コントローラーを呼び出す必要があります。すべてのクラスに 1 つの共有関数?

Application_Start を試してみましたが、これはアプリケーションの初回実行時にのみ実行されます。のようなものを検索BeginRequestしますが、この関数は数回呼び出されています。最初に必要なのは、ページをロードするときだけで、プロジェクト全体のコンストラクターやデストラクタなどの終了関数が必要です。

これがサンプルコードです。

public class MvcApplication : System.Web.HttpApplication
{
    protected void Application_Start()
    {
        AreaRegistration.RegisterAllAreas();
        FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
        RouteConfig.RegisterRoutes(RouteTable.Routes);
    }  
}

document.ready私の場合ではありません。そして、コントローラーごとに関数を呼び出すのは最後のオプションです。コードは、他の関数が呼び出される前に実行する必要があります。そして、すべてが終了する前に、終了関数を実行する必要があります。たとえば、最初に、すべてのクラスで共有される mysql コネクタを作成する必要があります。最後に、mysql接続を閉じる必要があります。

4

2 に答える 2

17

すべてのコントローラーがカスタム BaseController から継承されるようにします。

public class BaseController : Controller
{
    protected override void OnActionExecuting(ActionExecutingContext context)
    {
        base.OnActionExecuting(context);
        // your code here
    }
}

public class HomeController : BaseController // instead of Controller
{
    // ...
}
于 2013-10-09T09:15:29.390 に答える