2016-10-27 4 views
1

私はこれを読んでthreadを読んで、うまくいくはずのミスとその例を学びました。その後、自分自身で自動作成するようにしましたが、データベース内の検索と一致するエントリだけでなく、すべてのエントリが常に表示されます。だからここASP.NET MVC:jQuery UIオートコンプリートがすべてのエントリを正しく表示しない

は私のオートコンプリート機能のためのデータを返すコントローラのコードです:

public JsonResult AutoCompleteCustomer(string suggestion) 
     { 
      var data = db.Customers.Where(s => suggestion == null || s.Name.ToLower().Contains(suggestion.ToLower())).Select(x => new { id = x.CustomerID, value = x.CustomerName }).Take(20).ToList(); 

      return Json(data, JsonRequestBehavior.AllowGet); 
     } 

オートコンプリートのjQuery UI機能のための私のコード:

<script> 
    $("#CustomerName").autocomplete({ 
     source: "/Customer/AutoCompleteCustomer", 
     minLength: 3 
    }) 
</script> 

オートコンプリートを持つべきであるビュー内のテキストボックス(TextBox) :

@Html.TextBoxFor(m => m.CustomerName) 

さらにコードや情報が必要な場合は、私は知っていると私はできるだけ早くそれを提供します。ありがとう!

+2

パラメータは、 '文字列term'ではなく、'文字列suggestion'でなければなりません。クエリから 'suggestion == null ||'を削除します。そして、私は 'return Json(daten、'はタイプミス(その 'data')です。 –

+0

いつものように、あなたはすべての私の間違いをキャッチしました、あなたは素晴らしいです! – RawMVC

答えて

2

お使いのコントローラのアクションは、間違ったパラメータ名にそれを持ってしてみてください。

public JsonResult AutoCompleteCustomer(string term) 
    { 
     var data = db.Customers.Where(s => term== null || s.Name.ToLower().Contains(term.ToLower())).Select(x => new { id = x.CustomerID, value = x.CustomerName }).Take(20).ToList(); 

     return Json(data, JsonRequestBehavior.AllowGet); 
    } 

現時点では、常に、なぜあなたのであるNULLになります間違っているため、オートコンプリートは機能していますが、この条件がsuggestion == nullの場合、常にすべての結果が返されます。

あなたが本当にあなたのコントローラパラメータとしてsuggestionに固執したい場合は、明示的にAJAXの設定でこれを定義する必要があります:

<script> 
    $("#CustomerName").autocomplete({ 
     source: "/Customer/AutoCompleteCustomer", 
     data: { suggestion: request.term }, 
     minLength: 3 
    }) 
</script> 
+0

あなたのコードスニペットとあなたの説明をお寄せいただきありがとうございます。私の間違いがどこにあるのかを示しており、そのような間違いを避けるためにドキュメントを読む時間を増やす必要があります。 – RawMVC

+1

ちょうど==ナルナンセンスを削除するために更新... thoを投票しました。 – Seabizkit

0
var data = (from Customers in db.Customers Where s.Name.ToLower().Contains(suggestion.ToLower()) select new { id = Customers.CustomerID, value = Customers.CustomerName }).ToList().Take(20); 

termする必要があります。この

関連する問題