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条件が機能するはずです。何か案は...?