0

私はaspを初めて使用し、データベースに接続して数値レコードを取得し、それらのレコードをページ分割されたテーブルでユーザーに提示するプロジェクトを作成しました。その後、ユーザーはレコードをクリックして編集し、編集を行い、変更を保存して、元のテーブル ビューに戻ることができます。更新ページは強く型付けされています。

最後に表示されたページネーション ページを追跡してから、そのページに戻るのに苦労しています。つまり、ユーザーが 10 ページ中 5 ページにいる場合、5 ページからレコードを更新し、編集が保存されるとテーブルが再び表示されますが、1 ページに戻ってしまいます。最後のページネーション ページ?

どんな助けでも感謝します。

クリス

4

3 に答える 3

0

最後に、サーバーでセッション Cookie を使用して、表示されたページと最後の検索を追跡しました。これは、ページ/コントローラー間を移動し、それぞれにどのページが表示されているかを追跡できることを意味し、多くのパラメーターを渡す必要はありませんでした。新しいクラスを追加しました:

public class SearchModel 
{
    public string TargetController { get; set; }
    public string TargetMethod { get; set; }
    public string OriginalSearchCriteria { get; set; }
    public string NewSearchCriteria { get; set; }
    public int Page { get; set; }

    public void SetCriteria(String newCriteria, int pageIn)
    {

        if (!newCriteria.Equals(OriginalSearchCriteria))
        {
            OriginalSearchCriteria = newCriteria;
            Page = 1;
        }
        else
        {
            Page = pageIn;
        }
    }

    public void SetPage(int newPage)
    {
        if (newPage != 0)
            Page = newPage;

    }


}

追加したばかりのコントローラーで:

private SearchModel GetSearch()
    {
       SearchModel search = (SearchModel)Session["CgRefCodeSearch"];
       if (search == null)
       {
          search = new SearchModel();
          search.Page = 1;
          search.OriginalSearchCriteria = "";
          Session["CgRefCodeSearch"] = search;
        }
        return search;
     }

コントローラーの各関数で、これを参照できます。

GetSearch().SetPage(page);
CurrentPage = GetSearch().Page etc...

これは、Adam Freeman によるこの Pro ASP.NET MVC 3 Framework, Third Edition で読んだ内容に基づいています。スティーブン・サンダーソン。とてもシンプルですが、問題なく動作します。

于 2012-11-19T16:38:42.260 に答える
0

通常、フォーム送信でページ番号を渡し、保存後にリダイレクトするときに、それをクエリ文字列の一部として渡します。これにより、アクションはデータの正しいページをビューに戻すことができます。

これにより、ユーザーは特定のページをブックマークすることもできます。これは便利です。また、必要に応じて、場所を失うことなく現在のページを更新することもできます。

その機能が利用可能な場合は、並べ替え情報を渡す必要がある場合もあります。

于 2012-11-09T15:17:08.527 に答える
0

ビューステートに保存するといいことがわかりました:例:

ViewState("ページング") = 1

于 2012-11-09T23:39:02.157 に答える