我正在尝试使用带有json的typeahead但是没有取得多大成功。无论我输入哪个电影名称,它都会显示“踢屁股”。例如,我的数据库中也有'Blade Runner',我输入'Blade',但是typeahead显示'Kick Ass'。
建议表示赞赏。
查看:
@section scripts
{
<script>
$(document).ready(function () {
var movies = new Bloodhound({
datumTokenizer: Bloodhound.tokenizers.obj.whitespace('Name'),
queryTokenizer: Bloodhound.tokenizers.whitespace,
remote: {
url: '/movies/AllMovies?query=%QUERY',
wildcard: '%QUERY',
}
});
$('#Movie_Name').typeahead({
minLength: 3,
highlight: true
}, {
name: 'movies',
display: 'Name',
source: movies
});
});
</script>
}
控制器:
public JsonResult AllMovies()
{
return Json(_context.Movies.ToList(), JsonRequestBehavior.AllowGet);
}
JsonResult:
[{"Id":9,"Name":"Kick Ass","Genre":null,"GenreId":1,"DateAdded":"\/Date(1488499200000)\/","ReleaseDate":"\/Date(1269561600000)\/","NumberInStock":5,"NumberAvailable":0,"ImagePath":"~/Content/images/kickassthumb.jpg"},{"Id":11,"Name":"Star Trek Beyond","Genre":null,"GenreId":6,"DateAdded":"\/Date(1488758400000)\/","ReleaseDate":"\/Date(1469142000000)\/","NumberInStock":10,"NumberAvailable":0,"ImagePath":"~/Content/images/StarTrekBeyondthumb.jpg"},{"Id":12,"Name":"Blade Runner","Genre":null,"GenreId":6,"DateAdded":"\/Date(1489594314620)\/","ReleaseDate":"\/Date(400374000000)\/","NumberInStock":5,"NumberAvailable":0,"ImagePath":"~/Content/images/bladerunnerthumb.jpg"},{"Id":13,"Name":"Deadpool","Genre":null,"GenreId":1,"DateAdded":"\/Date(1489595002103)\/","ReleaseDate":"\/Date(1455062400000)\/","NumberInStock":5,"NumberAvailable":0,"ImagePath":"~/Content/images/deadpoolthumb.jpg"}]
答案 0 :(得分:0)
为什么不使用typehead的substringMatcher(source)方法?你可以做点什么
{
name: 'someName',
source: substringMatcher(source)
});
答案 1 :(得分:0)
确保您的_conext
未映射到模拟存储库。您的问题似乎与typeahead无关,因为考虑到服务电话的响应,它与预期完全一致。