2013-06-20 84 views
0

我正在JqueryUI选项卡中进行搜索。该选项卡包含Ajax搜索表单和显示搜索结果的表格。此外,我使用IpagedList来遍历结果表。控制器的Index行为包含Linq查询并控制要呈现的视图。下面是Index操作的代码:区分两个Ajax请求

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)); 
     } 

    } 

当用户第一次加载页面的其他部分执行这使得其显示形式和显示当前数据库中的所有顾问表的局部视图索引。但是,如果单击搜索按钮或取消按钮,则if条件变为true,并呈现局部视图Consultant列表。其中只更新页面的结果表部分。现在

我的问题是我想补充,其中当寻呼控制使用。如果条件得到满足的条件,只有在结果表顾问记录下页所示。我可以在If条件中使用isAjaxRequest()。但问题是,当jQueryUI的标签(含从和表)将加载,因为isAjaxRequest(),只有咨询列表视图会被渲染,我不希望的。如果条件将成为现实。

所以基本上我想区分两个ajax请求。如果ajax请求是为选项卡,那么else条件应该工作,如果它是从分页,然后if条件应该工作。 任何想法...?

回答

0

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

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

+0

谢谢...这将使我的代码更清洁并解决我的问题。 – sar