従業員間を検索するための検索フィールドがあります。ビューのコードは次のようになります。
<input id="employeeSearchText" name="employeeSearchText" type="text" autocomplete="off" />
<script type="text/javascript" language="javascript">
$("#employeeSearchText").autocomplete({
source: function (request, response) {
$.ajax({
url: "/Medarbejdere/Soeg",
type: "POST",
dataType: "json",
data: { searchText: request.term },
success: function (data) {
response($.map(data, function (item) {
return { label: item.Firstname + " "
+ item.Lastname, value: item.description, id: item.description }
}))
}
})
}
});
</script>
パス「/Medarbejdere/Soeg」は、コントローラで次のように定義されています。
[HttpPost]
public JsonResult Soeg(string searchText)
{
EmployeeRepository repo = new EmployeeRepository();
var result = repo.SearchByKeywords(searchText.Trim(), 10);
return Json(result, JsonRequestBehavior.AllowGet);
}
私の問題は、一部の入力では結果が表示されないことです。実際に 1 文字だけを入力して入力を待っていると、英語のアルファベットの同じ 5 文字では一貫して結果が返されません。
「Soeg」アクションにブレークポイントを配置すると、すべての入力に対して正しく到達し、repo.SearchByKeywords() もすべての入力に対して正しい結果を返しますが、何らかの理由で、結果が AJAX 呼び出しに返されるとレンダリングされません。
この段階でデバッグを行う方法がまったくわかりません。私は、次の動作を示す MVC ミニプロファイラーを使用します (文字 'c' では結果が得られず、文字 'e' では結果が得られると仮定します)。
「e」と入力すると、アクションの呼び出しが開始され、ブレークポイントがトリガーされ、ブラウザーの左側にある mvc-mini-profiler デバッグ情報に、呼び出しにかかった時間が表示されます。「c」と入力するとアクションが呼び出され、ブレークポイントがトリガーされますが、mvc-mini-profiler デバッグ ウィンドウには表示されません。
検索文字列が「cc」になるように別の「c」を入力すると、プロファイラーは実際にはアクションへの 2 つの呼び出しを表示しますが、2 番目の「c」を入力したときのみ表示されます。
問題をさらにデバッグする方法に関する解決策や提案についてのアイデアはありますか?
前もって感謝します!