2014-12-08 3 views
0

Я довольно новичок в ASP MVC 5 и после прочтения нескольких руководств, я все еще не могу реализовать простую функцию автозаполнения. Моя проблема в том, что данные, которые получает представление, это [Объект объекта], и я понятия не имею, почему. Количество выбранных слов верное, единственная проблема заключается в том, что он не показывает «слова» только [Объект объекта].ASP MVC 5 Auto Complete не работает

Так что это моя модель:

public class Vassal 
{ 
    public string Name { get; set; } 
    public string Type { get; set; } 

    public int ID { get; set; } 

    public class VassalDBContext : DbContext 
    { 
     public DbSet<Vassal> Vassals { get; set; } 
    } 
} 

Это мой контроллер (VassalControlller)

public JsonResult AutoComplete(string search) 
    { 
     var vassalNames = from m in db.Vassals 
          select m; 

     if (!String.IsNullOrEmpty(search)) 
     { 
      vassalNames = vassalNames.Where(s => s.Type.Contains(search)); 
     } 
     return Json(vassalNames, JsonRequestBehavior.AllowGet); 
    } 

и это мой взгляд

@model IEnumerable<webVassal.Models.Vassal> 
 

 
@{ 
 
    ViewBag.Title = "Search"; 
 
} 
 

 
    
 
<div class="ui-widget"> 
 
    <label for="tags">Tags: </label> 
 
    <input id="tags" /> 
 
</div> 
 

 

 
<script type="text/javascript" >  
 
    $(function() { 
 
     $('#tags').autocomplete({ 
 
      source: function (request, response) { 
 
       $.ajax({ 
 
        url: '@Url.Action("AutoComplete")', 
 
        dataType: "json", 
 
        contentType: 'application/json, charset=utf-8', 
 
        data: { 
 
         search: $("#tags").val() 
 
        }, 
 
        success: function (data) { 
 
         response($.map(data, function (item) { 
 
          return { 
 
           label: item 
 
          }; 
 
         })); 
 
        }, 
 
        error: function (xhr, status, error) { 
 
         alert(error); 
 
        } 
 
       }); 
 
      }, 
 
      minLength: 1 
 
     }); 
 
    }); 
 
</script>

Я использую JQuery 2.1.1, jquery-ui.min.js и jquery.ui.widget.js

Также, если бы я должен был адаптировать код выше, чтобы использовать плагин типа bootstrap Twitter, что мне нужно делать? Я пробовал следовать инструкциям по этой ссылке http://deanhume.com/home/blogpost/twitter-bootstrap-typeahead-and-asp-net-mvc---key-value-pairs/88, и я получал ошибку hasOwnProperty.

Приносим извинения за любые проблемы с форматом. Я новичок в выпуске кода.

Любая помощь очень ценится.

Спасибо за ваше время

ответ

1

попробовать заменить

return { 
 
    label: item 
 
};

с

return { 
 
    label: item.Name 
 
};

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

Я думаю, что вы должны задать вопрос о типографском вопросе отдельно.

+0

Ну, я чувствую себя немым, не замечая этого ... Большое спасибо за ваше время и ответ. – Donvan