2

すべてのアクションからその値にアクセスできるように、ベース コントローラーにプロパティを設定します。もともと私はメソッドに (Cookie から) 値を取得するためのコードを入れていましたOnActionExecutingが、これは機能しましたが、すべてのアクション呼び出しで呼び出されることに気付きました (一部のページでは、部分的なビューが繰り返されるため、何百回も実行される場合があります)。ページごとに1回だけ呼び出されるようにするにはどうすればよいですか?

同様の回答のある質問を見ました... ASP.NET MVCページサイクルで関数を*一度だけ*呼び出す方法ですが、回答はAjaxリクエストのみを処理しますが、これは私の問題ではありません。

4

1 に答える 1

1

@philsandler と同様に、同じソリューションを使用できます。しかし、アクション フィルターを使用して再利用可能にし、封じ込めます。以下のようなもの。

public class RunOnlyPerAction : ActionFilterAttribute
{
    public override void OnActionExecuting(ActionExecutingContext filterContext) {
        if (!filterContext.HttpContext.Request.IsAjaxRequest())
        {
            //read cookie
        }
    }
}


 [RunOnlyPerAction]
 public ActionResult Index()
 {
     return View();
 }
于 2013-10-28T19:50:46.763 に答える