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" が using スコープでのみ満たされていることに気付きました。スコープを使用していないユーザーを即座に制御すると、次のようになります。 DbContext が破棄されたため、操作を完了できません

このディスカッションに従って、この問題を解決しました DbContextが破棄されたため、操作を完了できません エラー

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 に答える