0

JqueryUI タブで検索フォームを作成しています。このタブには、Ajax 検索フォームと、検索結果を示すテーブルが含まれています。また、IpagedList を使用して結果テーブルをページングしました。コントローラーの Index アクションには、Linq クエリが含まれており、レンダリングするビューを制御します。以下は、Index アクションのコードです。

public ActionResult Index(ConsultantSearch model, int page = 1)
    {
        if (!String.IsNullOrEmpty(model.SearchButton)  ||!String.IsNullOrEmpty(model.CancelButton))
        {                
            var consultants = from con in db.Consultants
                              where (model.ConsultantName == null || con.ConsultantName.Contains(model.ConsultantName)) && (model.CompanyID == null || con.CompanyID == model.CompanyID) 
                              && (model.ClientID == null || con.ClientID == model.ClientID) && (model.VendorID == null || con.VendorID == model.VendorID) && (model.RecruiterID == null || con.RecruiterID == model.RecruiterID)
                              && (model.Class == null || con.Class == model.Class) && (model.W2_1099 == null || con.W2_1099 == model.W2_1099) && (model.IsActive == null || con.IsActive == model.IsActive)
                              && (model.StartDate == null || model.EndDate == null || (con.StartDate >= model.StartDate && con.EndDate <= model.EndDate))&&( model.StartDate == null || con.StartDate >= model.StartDate) && (model.EndDate == null|| con.EndDate <= model.EndDate)
                              select con;

            consultants = consultants.Include(c => c.Client).Include(c => c.Company).Include(c => c.Recruiter).Include(c => c.SalesPerson).Include(c => c.Vendor);
            return PartialView("_ConsultantList",consultants.ToList().ToPagedList(page,RecordsPerPage)); 
        }
        else 
        {
            var consultants = db.Consultants.Include(c => c.Client).Include(c => c.Company).Include(c => c.Recruiter).Include(c => c.SalesPerson).Include(c => c.Vendor);
            return PartialView(consultants.ToList().ToPagedList(page, RecordsPerPage));
        }

    }

ユーザーが最初にページをロードすると、else 部分が実行され、現在データベースにあるすべてのコンサルタントを示すフォームとテーブルを示す部分ビュー インデックスがレンダリングされます。ただし、検索ボタンまたはキャンセル ボタンをクリックすると、if 条件が true になり、部分ビューのコンサルタント リストがレンダリングされます。ページの結果テーブル部分のみを更新します。

ここで私の質問は、ページング コントロールが使用されたときに If 条件が true になり、結果テーブルのコンサルタント レコードの次のページのみが表示される条件を追加したいということです。If 条件で isAjaxRequest() を使用できます。しかし問題は、JqueryUI タブ (from と table を含む) が IsAjaxRequest() のために true になる If 条件をロードし、望ましくないコンサルタント リスト ビューのみがレンダリングされることです。

したがって、基本的には2つのajaxリクエストを区別したいと思います..ajaxリクエストがタブ用の場合はelse条件が機能し、ページングからの場合はif条件が機能するはずです。何か案は...?

4

1 に答える 1