2017-06-27 9 views
0

現在、私のコントローラメソッドから渡されるリストの特定のエントリを表示しようとしていますが、このようなページ区切りバーからユーザーが選択するページに応じて選択します。javascript変数を@Model関数に渡す方法

<nav aria-label="Page navigation"> 
    <ul class="pagination"> 
     <li class="page-item"> 
      <a class="page-link" href="#">Previous</a> 
     </li> 
     @for (int i = 1; i <= numberOfPages; i++) 
     { 
      <li class="page-item"> 
       <a class="page-link" href="#" onclick="showResults(@i)">@i</a> 
      </li> 
     } 
     <li class="page-item"> 
      <a class="page-link" href="#">Next</a> 
     </li> 
    </ul> 
    <h4> 
     Retrieved @Model.Count() results - currently showing 10 per page 
    </h4> 
</nav> 

文脈によっては、numberOfPagesは、Model.Count()/10 + 1として定義されるかみそり変数である。今は、渡されたリストから正しい要素を取得しようとしています。しかし、私のshowResultsメソッドでは、@Modelを含む関数でjavascript変数を使用することができません。

ライン、 var items = @Model.Skip(page * 10).Take(10);
<script> 
    function showResults(page) { 
     //no need to reload the current page 
     if (page == @currentPage){ 
      return; 
     } 
     page = page - 1; //e.g. if user wants to go to page 1, then results gathered would be from 0 to 9 
     var items = @Model.Skip(page * 10).Take(10); 
    } 
</script> 

、私は

名「ページ」を言うエラーが出る私が試した

ことの一つはJavascript variable in razor ActionLinkからだった現在のコンテキスト内に存在しませんしかし、ここでの答えはreplaceで、私には "Uncaught Syntax"エラーが出ます。可能であれば、javascript変数を使用してリストをフィルタリングする方法はありますか?

+1

クライアント上で実行されるコードとサーバー上で実行されるコードは分かりません。 'showResults'は、新しいページ番号を渡してあなたのビューへのリダイレクトやajax呼び出しを行わなければなりません。 – GSerg

+0

あなたがやろうとしていることは不可能です.JavaScriptはクライアントサイドであり、ページが提供される前にひらめき、つまり受け取ったエラーのために、JavaScriptを混ぜ合わせることはできません。 – sleeyuen

答えて

0

skip take操作をかみそり変数に行います。クライアント側のパラメータを使用してサーバー側の計算を行うことはできません。

モデルにすべてのデータが含まれている場合、なぜかみそりを使用してデータをフィルタリングする必要がありますか?データをJavaScript変数に割り当て、スキップしてショー結果メソッドを実行します。

そのページのAjax呼び出しよりも動的にデータをロードし、そのデータのみでモデルを埋めたい場合は、その後、再び2番目の段落を実行してください:)

+0

ビュー内にリスト全体があったとします.Ajaxを使わずにフィルタリングすることはできますか?データをフィルタリングしているのは、単一のページにページネーションを実装したいからです。したがって、ユーザが結果10〜19を見たい場合、ユーザはページ2に行くことができる。 –

関連する問題