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

私のすべてのフィルターオプションはオプションです。1つまたは複数のフィルターオプションを選択することも、どれも選択しないこともできます。エラー範囲変数の投稿が表示され、各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 に答える