2016-09-18 37 views
0

我的日期過濾器工作得很好,當我把它放到一個單獨的視圖中,但我遇到了麻煩與其他過濾器合併,我不知道我錯了。所有其他過濾器正在工作。當我加入我的查詢到其他人以使其工作併合並時,您可以請看看並讓我知道我需要更改什麼?謝謝!日期過濾器無法正常工作MVC

下面是它看起來像在一個單獨的控制器,並且該作品在視圖:

public ActionResult DateFilter(FormCollection DatePicker) 
    { 
     DateTime start = DateTime.Today; 
     DateTime end = DateTime.Today; 

     if (DatePicker.Count > 0) 
     { 
      start = DateTime.Parse(DatePicker["startDate"].ToString()); 
      end = DateTime.Parse(DatePicker["endDate"].ToString()); 
     } 
     var Issue = db.Issue.Where(d => d.DateCreated >= start && d.DateCreated <= end).Select(i => new IssueViewModel 
     { 
      Name = i.Name, 
      Description = i.Description, 
      DateCreated = i.DateCreated, 
      DateCompleted = i.DateCompleted, 
      //ect. 
     }).ToList(); 

     ViewBag.Issue = Issue; 

     return View(); 
    } 

這裏是什麼樣子合併到其它過濾器:

private static IQueryable<Issue> FilterDeviceList(List<Issue> issues, FormCollection DatePicker, string EHP, string IssueKey) 
    { 
     var query = issue.AsQueryable(); 

     //COPYING STARTS HERE 
     DateTime start = DateTime.Today; 
     DateTime end = DateTime.Today; 

     if (DatePicker.Count > 0) 
     { 
      start = DateTime.Parse(DatePicker["startDate"].ToString()); 
      end = DateTime.Parse(DatePicker["endDate"].ToString()); 
     } 
      query = query.Where(d => d.DateCreated >= start != null && d.DateCreated <= end != null && d.DateCreated == Convert.ToDateTime(DatePicker)); 

      //COPYING ENDS HERE 

     if (!string.IsNullOrWhiteSpace(EHP)) 
      query = query.Where(i => i.EHPP != null && i.EHPP == (EHP == "1" ? false : true)); 

     if (!string.IsNullOrWhiteSpace(IssueKey)) 
      query = query.Where(i => i.IssueKey != null && i.IssueKey.Contains(IssueKey)); 

return query; 
} 

如果有人需要查看調用IQueryable的視圖或控制器,請讓我知道,我可以發佈它,但我認爲這應該足夠了。再次感謝你! :)

+0

具體什麼不工作?順便說一句,我不是很確定這個表達式做了什麼'd.DateCreated> = start!= null' – Shyju

+0

我試過這樣做,沒有設置它不等於null,但那也行不通。我只是在玩它而已。第一個控制器中的方法會正確地返回日期過濾日期,但合併的IQueryable控制器中的方法不會返回任何內容,而且我不確定該行中的哪些內容需要更改或應放置在何處。 – Millie

回答

0

試試這個:

private static IQueryable<Issue> FilterDeviceList(List<Issue> issues, FormCollection DatePicker, string EHP, string IssueKey) 
{ 
    var query = issues.AsQueryable(); 

    DateTime start,end; 

    if (DatePicker.Count > 0) 
    { 
     start = DateTime.ParseExact(DatePicker["startDate"].ToString(), "MM/dd/yyyy", CultureInfo.InvariantCulture); 
     end = DateTime.ParseExact(DatePicker["endDate"].ToString(), "MM/dd/yyyy", CultureInfo.InvariantCulture); 
    } 
    // assuming start and end date will not be null 
    if(start != null && end !=null) 
    { 
     query = query.Where(d => d.DateCreated >= start && d.DateCreated <= end); 
    } 

    if (!string.IsNullOrWhiteSpace(EHP)) 
     query = query.Where(i => i.EHPP != null && i.EHPP == (EHP == "1" ? false : true)); 

    if (!string.IsNullOrWhiteSpace(IssueKey)) 
     query = query.Where(i => i.IssueKey != null && i.IssueKey.Contains(IssueKey)); 

    return query; 
} 
相關問題