我已在我的应用中实施了自动完成功能,用于检索用户列表,但在搜索用户时,列表未显示。
在我的_Layout.cshtml中:
<link href="@Url.Content("~/Content/themes/base/jquery.ui.all.css")" rel="stylesheet" type="text/css" />
<script src="~/Scripts/jquery-2.0.3.js" type="text/javascript"></script>
<script src="~/Scripts/jquery-ui-1.10.3.js" type="text/javascript"></script>
在我的观点中:
<script type="text/javascript">
$(document).ready(function () {
$(function () {
$('#txtListUsers').autocomplete({
source: '@Url.Action("GetJsonUsers","GestioneLega")',
minLength: 2
});
});
})
</script>
...
<input type="text" id="txtListUsers" />
我的行动:
public JsonResult GetJsonUsers(string term)
{
var users = GestServices.GetUsersForAutocomplete(term);
return Json(users, JsonRequestBehavior.AllowGet);
}
获取数据:
public static object GetUsersForAutocomplete(string searchTerm)
{
object users = null;
using (var db = new FriendsContext())
{
users = from cust in db.Users.Where(c => c.UserName.StartsWith(searchTerm))
select cust.UserName;
}
return users;
}
函数GetJsonUsers不起作用做更多测试,我注意到在GetUsersForAutocomplete函数中,变量“users”仅在使用范围内填充。如果我立即控制用户使用范围,请获取: 由于已经处理了DbContext,因此无法完成操作
我通过以下讨论The operation cannot be completed because the DbContext has been disposed error
解决了这个问题答案 0 :(得分:0)
您可以在GetJsonUsers上设置断点并跟踪到错误。您还可以使用f12查看返回浏览器的内容。
答案 1 :(得分:0)
请执行以下操作:
$('#txtListUsers').autocomplete({
source:function( request, response ) {
$.ajax({
url: "@Url.Action("YourActionName","YourControllerName")",
dataType: "json",
data: {},
success: function( data ) {
response( $.map( data, function( item ) {
return {
label: item.name,
value: item.name
}
}));
}
});
},
minLength: 2
});