0

我已经在我的应用程序中实现了一个自动完成功能来检索用户列表,但是当我搜索用户时该列表没有显示。

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

4

2 回答 2

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
       });
于 2013-09-08T05:45:12.880 回答
0

您可以在 GetJsonUsers 上设置断点并跟踪到错误。您还可以使用 f12 查看返回到浏览器的内容。

于 2013-09-07T22:38:09.060 回答