ビューにオートコンプリート機能を追加しました。動作しません。テキストボックスにフォーカスを設定して文字を入力しても、何も表示されません。ここで何が間違っているのかわかりませんが、コードは次のとおりです。
参照されるjQueryファイル:
<script src="@Url.Content("~/Scripts/jquery-1.8.3.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery-ui.js")" type="text/javascript"></script>
意見:
$(function () {
$("#rootcause").autocomplete({
source: function (request, response) {
alert("x");
$.ajax({
url: "/ServiceEntry/FindRootCause",
type: "POST",
dataType: "json",
data: {
searchText: request.searchText,
maxResult: 10
},
success: function (data) {
response($.map(data, function (item) {
return {
label: item.FullName,
value: item.RootCauseName,
id: item.Id
}
}))
}
})
},
select: function (event, ui) {
alert(ui.item
? ("You picked '" + ui.item.label +
"' with an ID of " + ui.item.id)
: "Nothing selected, input was " + this.value
);
}
});
});
<div class="bodyContent">
<span class="leftContent">@Html.Label("Root Cause")</span>
<span class="rightContent">
<input id="rootcause" type="text" />
</span>
</div>
コントローラのアクション:
[HttpPost]
public JsonResult FindRootCause(string searchText, int maxResult)
{
var result = RunLog.Domain.Lists.GlobalList.GetRootCause(searchText, maxResult);
return Json(result);
}
public static List<RunLog.Domain.Entities.RootCause> GetRootCause(string search, int maxResult)
{
//List<String> list = new List<String>();
EFDbContext db = new EFDbContext();
var list = (from rc in db.RootCause
where rc.RootCauseName.Contains(search)
orderby rc.RootCauseName
select rc).ToList();
return list.Take(maxResult).ToList();
}