2012-02-11 3 views
2

j'ai la méthode référentiel suivante pour rechercher des utilisateurs contenant un paramètre de recherche: -complet automatique ne fonctionne pas dans mon asp.net MVC

public IEnumerable<User> searchusers2(string q) 
    { 
     return from u in entities1.Users 
       where (u.UserID.Contains(q) || string.IsNullOrEmpty(q)) 
       select u; 
      } 

qui est appelé poursuit la méthode d'action suivante: -

public ActionResult QuickSearch(string term) 
     { 
      var users = r.searchusers2(term); 
      users.Select(a => new { value = a.UserID }); 
      return Json(users, JsonRequestBehavior.AllowGet); 
} 

et sur la vue que j'ai le code suivant: -

@using (Ajax.BeginForm("Search", "User", new AjaxOptions 
{ 
    HttpMethod = "POST", 
    InsertionMode = InsertionMode.Replace, 
    UpdateTargetId = "searchResults", 
    LoadingElementId = "progress" 
})) 
{ 

    <input type="text" name="q" data-autocomplete-source="@Url.Action("QuickSearch", "User")" /> 
    <input type="hidden" name="classid" value="@ViewBag.classid"/> 



    <input type="submit" value="Search" /> 
} 

le code ci-dessus n'est pas wo rking mais si je change ma méthode d'action pour être comme suit (sans utiliser un référentiel pour effectuer la recherche), le remplissage automatique fonctionnera bien ,,, si ce pourrait être à l'origine de ce problème: -

public ActionResult QuickSearch(string term) 
     { 
           var users = entities1.Users 
       .Where(e => e.UserID.Contains(term)) 
       .Select(r => new {value = r.UserID }); 
      return Json(users, JsonRequestBehavior.AllowGet); 

     } 

Répondre

1

Dans le dépôt version vous retournez le tout objet utilisateur JSON, le Select dans

public ActionResult QuickSearch(string term) 
{ 
      var users = r.searchusers2(term); 
      users.Select(a => new { value = a.UserID }); 
      return Json(users, JsonRequestBehavior.AllowGet); 
} 

ne fait rien parce que vous n'êtes pas stocker les valeurs renvoyées, vous devrez soit enchaîner l'appel ainsi que, par exemple:

public ActionResult QuickSearch(string term) 
{ 
      var users = r.searchusers2(term).Select(a => new { value = a.UserID }); 
      return Json(users, JsonRequestBehavior.AllowGet); 
} 

ou utiliser une variable distincte:

public ActionResult QuickSearch(string term) 
{ 
      var users = r.searchusers2(term); 
      var values = users.Select(a => new { value = a.UserID }); 
      return Json(values, JsonRequestBehavior.AllowGet); 
} 
Questions connexes