C# ASP.NET MVC:jQuery UI自动完成错误地显示所有条目
我读了这篇文章,研究了其中的错误和应该起作用的例子。之后,我尝试自己构建它,但它始终显示所有条目,而不是仅显示与数据库中的搜索匹配的条目 下面是返回自动完成函数数据的控制器代码:C# ASP.NET MVC:jQuery UI自动完成错误地显示所有条目,c#,jquery,asp.net,asp.net-mvc,jquery-ui,C#,Jquery,Asp.net,Asp.net Mvc,Jquery Ui,我读了这篇文章,研究了其中的错误和应该起作用的例子。之后,我尝试自己构建它,但它始终显示所有条目,而不是仅显示与数据库中的搜索匹配的条目 下面是返回自动完成函数数据的控制器代码: public JsonResult AutoCompleteCustomer(string suggestion) { var data = db.Customers.Where(s => suggestion == null || s.Name.ToLower().Con
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>
如果您需要更多的代码或信息,请让我知道,我会尽快提供。谢谢
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);
尝试此操作您的控制器操作的参数名称错误,它应该是
术语
:
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);
}
因为此时它是不正确的,所以它总是空的,这就是为什么自动完成可以工作,但总是返回所有结果,因为这个标准suggestion==NULL
总是正确的
如果您确实想坚持使用建议
作为控制器参数,则需要在AJAX配置中明确定义:
<script>
$("#CustomerName").autocomplete({
source: "/Customer/AutoCompleteCustomer",
data: { suggestion: request.term },
minLength: 3
})
</script>
$(“#客户名称”).autocomplete({
来源:“/Customer/AutoCompleteCustomer”,
数据:{建议:request.term},
最小长度:3
})
参数应该是字符串术语
,而不是字符串建议
。并从查询中删除suggestion==null |
。我假设返回Json(daten,是一个输入错误(它的数据
),一如既往,你抓住了我所有的错误,谢谢!你太棒了!:)是的,它是一个输入错误,数据是正确的。谢谢你的代码片段和解释,它显示了我的错误所在,我需要花更多的时间阅读文档以避免此类错误。。。投赞成票。
<script>
$("#CustomerName").autocomplete({
source: "/Customer/AutoCompleteCustomer",
data: { suggestion: request.term },
minLength: 3
})
</script>