ASP.Net MVC Jquery自动完成 - 列表未显示

时间:2013-09-07 22:30:32

标签: jquery asp.net asp.net-mvc

我已在我的应用中实施了自动完成功能,用于检索用户列表,但在搜索用户时,列表未显示。

在我的_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

解决了这个问题

2 个答案:

答案 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
       });