2013-07-14 4 views
1

Я новичок в MVC и теперь имею проблему. Пожалуйста, дайте мне решение.MVC 4: jQuery AutoComplete показывает список «undefined»

Я создаю простой автозаполнение текстового поля в MVC4. Вот мой код

В контроллере:

public ActionResult List(string term) 
    { 
     DebateEntities _db = new DebateEntities(); 
     var results = from u in _db.Users 
         where u.username.ToLower().Contains(term.ToLower()) 
         select new { u.username}; 

     return Json(results, JsonRequestBehavior.AllowGet); 
    }  

В View

@model DebateApp.Models.MessageModels 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" > 
<head> 
    <title></title> 
    <link href="http://www.asp.net/ajaxLibrary/jQueryCodeSamplesMVC/Content/redmond/jquery-ui-1.8.2.custom.css" rel="stylesheet" type="text/css" /> 
</head> 
<body> 

    @using (Html.BeginForm()) 
    { 
     <fieldset> 
     <legend>User Lookup</legend> 
      @Html.TextBox("name") 
      @Html.TextBox("userID") 
      <input type="submit" value="Find" />   
     </fieldset> 
    } 

</body> 
    <script src="http://www.asp.net/ajaxLibrary/jQueryCodeSamplesMVC/Scripts/jQueryUI/jquery-1.4.2.min.js" type="text/javascript"></script> 
    <script src="http://www.asp.net/ajaxLibrary/jQueryCodeSamplesMVC/Scripts/jQueryUI/jquery-ui-1.8.2.custom.min.js" type="text/javascript"></script> 
    <script type="text/javascript"> 
     $("#name").autocomplete({ 
      source: '@Url.Action("List")', 
      select: function (event, ui) { 
       $("#name").val(ui.item.username); 
      } 
     }); 

</script> 
</html>  

Когда я введите 'D' в текстовое поле, список появится, но все они " не определенно». Когда я выбираю опцию «undefined», она показывает правильное имя пользователя.

Как я могу решить «неопределенный» список?

Спасибо

+0

Является ли действие при контролере полученным значением в терминах? –

+0

Вы пытались установить точку перерыва в 'source: '@ Url.Action (« Список »)' и проверить правильность сериализации ваших данных? – Michael

ответ

0

Да даже я столкнулся с этой проблемой ранее. Основная причина этого может заключаться в том, что ваш код jquery не смог извлечь содержимое из тегов ссылок источника.

Я предлагаю вам использовать следующую

<script src="code.jquery.com/jquery-1.8.3.js"; type="text/javascript"></script> 
<script src="code.jquery.com/ui/1.9.2/jquery-ui.js"; type="text/javascript"> 

и для Jquery что-то вроде

<script type="text/javascript"> 
    $(function() { 
     $('#name').autocomplete({ 
      source: '@Url.Action("List")', 
      minLength: 1, 
      select: function (evt, ui) { 
      } 
     }); 
    }); 
</script> 

и вы можете использовать один и тот же код для контроллера. я не могу с этим справиться. Скорее всего, вы больше не получите неопределенного.

Смежные вопросы