0

我有一个 IEnumerable 视图。这个视图页面(cshtml)包含一个模型数据和一个表单的一些数据。它列出了数据库中我的模型的所有数据。我想通过多个过滤器选项过滤这些数据,例如按城市、区域、楼层、道路编号等过滤所有这些过滤器都在我的表单字段中。我的操作是这样的:

                                                                                            [HttpPost]
  public ViewResult SearchPost()
      {

        var posts =db.posts.Include("user").ToList();

        if (Request.Form["searchString"] != null)
        {
           posts = (from posts in db.posts where posts.area   
           ==Request .Form["searchString"]).ToList();                      
        }
         if (Request.Form["searchString2"] != null)
        {
            posts = (from posts in db.posts where posts.city 
            ==Request.Form["searchString2"]).ToList();
        }
          if (Request.Form["searchString3"] != null)
        {
            posts = (from posts in db.posts where posts.floor 
            ==Request.Form["searchString3"]).ToList();
        }


        return View(posts);
       }

我的视图页面:

   @using (Html.BeginForm()){   
     <p> Area: @Html.TextBox("SearchString") 
     <p> City: @Html.TextBox("SearchString2") 
     <p> Floor: @Html.TextBox("SearchString3") 
     <input type="submit" value="Filter" /></p>
    }


   >.....list of Model Data

我的所有过滤器选项都是可选的。可以选择一个或多个过滤器选项,也可以不选择任何一个。它给出了错误范围变量帖子,我想在每个 if 条件块中过滤我的结果集。可能吗 ???如果可能的话,请给我一些想法.....提前谢谢

4

1 回答 1

0

在运行查询之前检查结果是否为 null && Any() 总是一个好主意。过滤器 1 和/或 2 可能会排除所有结果。

if (Request.Form["searchString"] != null)          
{
    if ((posts!=null) && (posts.Any()))
         {
                posts = (from posts in db.posts where posts.area
                ==Request .Form["searchString"]).ToList();                                
         }
}           
if (Request.Form["searchString2"] != null)          
{              
    if ((posts!=null) && (posts.Any()))   
         {
                posts = (from posts in db.posts where posts.area
                ==Request .Form["searchString2"]).ToList();                                
         }
}            
if (Request.Form["searchString3"] != null)          
{
    if ((posts!=null) && (posts.Any()))   
         {
                posts = (from posts in db.posts where posts.area
                ==Request .Form["searchString3"]).ToList();                                
         }
}              
于 2012-05-03T21:27:10.127 回答