テキスト ボックスに jQuery オートコンプリートを実装していますが、コードが正しく表示されるかどうか知りたいです。
これが私のビューからの私のテキストボックスです。
<div class="editor-field">
@Html.TextBoxFor(model => model.Customer.CustomerName,
new {id = "CustByName" })
</div>
テキストボックス ID のオートコンプリートを実装する JavaScript を次に示します。
$(document).ready(function () {
$("#CustByName").autocomplete({
source: function (request, response) {
$.ajax({
url: "/Cases/FindByName", type: "GET", dataType: "json",
data: { searchText: request.term, maxResults: 10 },
success: function (data) {
response($.map(data, function (item) {
return {
label: item.CustomerName,
value: item.CustomerName,
id: item.CustomerID }
}))
}
})
}
});
});
以下は、JavaScript によって呼び出されるコントローラー アクションです。
public JsonResult FindByName(string searchText, int maxResults)
{
CustomerFind find = new CustomerFind();
var result = find.FindCustomerByName(searchText, maxResults);
return Json(result);
}
FindCustomerByName と呼ばれる CustomerFind の関数を次に示します。
internal List<Models.Customer>
FindCustomerByName(string searchText, int maxResults)
{
List<Models.Customer> cust = new List<Customer>();
var result = from c in cust
where c.CustomerName.Contains(searchText)
orderby c.CustomerName
select c;
return result.Take(maxResults).ToList();
}
これは、スクリプト参照用のレイアウトcshtmlファイルにあるものです。
<link href="@Url.Content("~/Content/Site.css")" rel="stylesheet" type="text/css" />
<link href="http://ajax.aspnetcdn.com/ajax/jquery.ui/1.8.20/themes/smoothness/jquery-ui.css" rel="stylesheet" type="text/css" />
<script src="http://ajax.aspnetcdn.com/ajax/jquery/jquery-1.7.2.min.js" type="text/javascript"></script>
<script src="http://ajax.aspnetcdn.com/ajax/jquery.ui/1.8.20/jquery-ui.min.js" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/rls-functions.js")" type="text/javascript"></script>"
FindCustomerByName
の LINQ クエリが存在するにもかかわらずレコードを返さないことを除いて、すべてが正常に機能しているようです。
問題の可能性があることを提案したり、オートコンプリートを行うためのより良い方法を提案したりできますか?
私は数多くの例を見て、これをまとめました。