2017-02-22 11 views
0

私のプロジェクトでキーワードによる検索アクションを作成しようとしています。ここ は、ビュー内のコードである:ここでフィルタ 'キーワードで検索'が動作しません

<form method="get"> 
<input type="radio" name="news" value="newest"> Newest First 
<input type="radio" name="news" value="keyword"> Keyword Search 

<input type="search" name="keyword" id="search" /> 
<button type="submit" value="Search"><span class="glyphicon glyphicon-search"></span></button> 

モデルである:ここでは

public class News 
{ 
    public int Id { get; set; } 
    public string Date { get; set; } 
    public string Name { get; set; } 
    public string Description { get; set; } 
    public string Image { get; set; } 
    public string Link { get; set; } 

} 

は、それが働いていないコントローラです。 Newest Firstは適切なデータを提供していますが、Keywordは最初にリストのすべての単一のオブジェクトを提供します。

[HttpGet] 
    public ActionResult News(String news = null, String text = null) 
    { 
     if (news == "newest") 
     { 

      var model = 
       from n in _news 
       orderby n.Date 
       select n; 
      return View(model); 
     } 
     else { 

      var model = 
       from n in _news 
       .Where(n=> text == null || n.Name.Contains(text)) 
       select n; 

      return View(model);   
     } 

    } 

そして、ここでニュースリストの要素のほんの一部です:

static List<News> _news = new List<News> 
    { 

     new News { 

      Id = 1, 
      Date = "01/01/2017", 
      Name = "blabla", 
      Description = "blabla", 
      Image = "blabla.jpg", 
      Link = "dassda" 
     }, 

     new News { 

      Id = 2, 
      Date = "vlava", 
      Name = "dada", 
      Description = "dsadasa", 
      Image = "dasdsa.jpg", 
      Link = "sdaa" 
     }; 
+0

テキストがnullの場合、すべてのレコードが返されます。入力名がパラメータと一致しません。 – Nkosi

+2

''(キーワード "ではない - メソッドのパラメータの名前と一致する必要があります) –

+0

私は知っていますが、 textがnullでなくても、それでもすべてのレコードが返されます。 –

答えて

2

あなたの「検索」入力は、あなたのパラメータの名前と一致しないname="keyword"を持っています。互いが一致するように一方または他方を変更してください。ビュー

<input type="search" name="keyword" id="search" /> 

でまたはコントローラで

public ActionResult News(string news, string keyword) 

、あなたがやるべきことは何

(彼らはすでにデフォルトである)= nullを追加する必要はありません注意してくださいただし、検索プロパティとコレクションを含むビューモデルを作成しています

public class MyViewModel 
{ 
    public string News { get; set; } // an enum would be a better choice 
    public string Keyword { get; set; } 
    public IEnumerable<News> NewsList { get; set; } 
} 

とビューを返したときに、あなたの入力の値が保持されるよう強く例

@Html.TextBoxFor(m => m.KeyWord, new { type="search" }) 

ために、ビューのHtmlHelperメソッドを使用して、モデルへの結合。

関連する問題