我正在文本框中实现 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);
}
这是 CustomerFind 中名为 FindCustomerByName 的函数:
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>"
一切似乎都正常,除了 LINQ 查询FindCustomerByName
不返回任何记录,即使它们存在。
任何人都可以提出可能是什么问题或提出更好的自动完成方法吗?
我查看了许多示例并将其拼凑在一起。