2017-08-18 7 views
1

私はMVC 5で作業しています。mvc renderbody()の前に_layout関数を呼び出す

すべてのページが読み込まれる前に関数を呼び出す必要があります。 私は_Layout.cshtmlビューでそれをやった:

$(function() { 
 
     $('body').on('click', function (e) { 
 
      var valor = GetSession(); 
 
      $('#hdnSessionTime').val(valor); 
 
     }); 
 
}

私はすべてのページ上のユーザーのクリック、GetSessionと呼ばれる機能をレイアウトページで定義された隠しフィールドの値を保存し、毎回実行します。

問題は、それが@RenderBody()後に実行することであると私は前にそれを必要とする...

が可能ということですか?

+0

RenderBody()はページとサイトのすべての機能を読み込みます。私がしようとしているのは、ユーザーがページの要素をクリックし、別のページまたは部分的なビューを呼び出すときに、その「クリック」が_layout.cshtmlで定義された関数の後で実行され、 – Diego

答えて

1

アクションメソッドが呼び出される前に、またはアクションメソッドが実行された後にロジックを実行することがあります。これをサポートするために、ASP.NET MVCはfiltersを提供します。フィルタは、アクション前およびアクション後の動作をコントローラアクションメソッドに追加するための宣言的およびプログラム的手段を提供するカスタムクラスです。 custom filterthisのように使用できます。

クライアント側

あなたは、クライアント側のコードを実行したい場合は、このコード(@RenderBody前())を使用することができます。

<script type="text/javascript"> 
    $(document).ready(function() { 
     var valor = GetSession(); 
     $('#hdnSessionTime').val(valor); 
    }); 
</script> 

は同様の例のためthisを参照してください。

+0

ありがとうございましたフィルタを使用していますが、問題は、jqueryをサーバーに使用せず、コントローラを使用しているときです – Diego

+0

@Diego 'MVC'パターンがレンダービューの前にアクション(サーバー側)を実行します –

+0

@Diego @この問題を解決するのに役立ちます。 –

関連する問題