0

我正在 JqueryUI 选项卡中制作一个搜索表单。该选项卡包含 Ajax 搜索表单和显示搜索结果的表格。我还使用 IpagedList 对结果表进行分页。控制器的 Index 操作包含 Linq 查询并控制要呈现的视图。以下是索引操作的代码:

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 条件变为真,并呈现部分视图顾问列表。仅更新页面的结果表部分。

现在我的问题是我想添加一个条件,当使用分页控件时,如果条件为真,并且只显示结果表中顾问记录的下一页。我可以在 If 条件中使用 isAjaxRequest()。但问题是当 JqueryUI 选项卡(包含 from 和表)将加载 If 条件时,由于 isAjaxRequest() 将变为 true,并且只会呈现我不想要的顾问列表视图。

所以基本上我想区分这两个 ajax 请求。如果 ajax 请求是针对选项卡的,那么 else 条件应该起作用,如果它来自分页,那么 if 条件应该起作用。有任何想法吗...?

4

1 回答 1

0

重新设计您的控制器操作方法。不要在控制器中放置条件逻辑,而是为您需要满足的每个条件添加一个操作方法,并将要请求的逻辑放在视图/标记中。

判断您是否应该加载顾问网格或某些搜索结果的分页视图的最佳方法是视图/JavaScript 是否对适当的操作方法执行 ajax 请求。

于 2013-06-20T20:12:29.277 回答