我想在asp.net mvc4 app中使用自动完成小部件。我能够调用该操作来获取控制器的autcompletition值列表。不幸的是,我无法将其添加到建议列表中。我认为.map(自动完成ajax调用的成功部分中的数据,函数(item)不起作用。但我真的不知道为什么。我确信所有脚本和css都是corectly加载。我说明控制器动作返回建议列表,也是视图中的脚本和来自firebug的响应。我也在尝试jqueryui页面的演示示例并且它正在工作,但不知何故它对我返回的数据不起作用。有人能帮助我并告诉我原因吗?谢谢你提前。
控制器中的操作:
public ActionResult GetCities(int RegionId, string Name)
{
var ret = db.Cities.Where(c => c.RegionId == RegionId &&
c.Name.Contains(Name)).Select(a => new{ CityId = a.CityId, Name = a.Name});
return Json(ret);
}
视图中的脚本:
<script type="text/javascript">
$(function() {
$("#City").autocomplete({
source: function(request, response) {
$.ajax({
url: "@Url.Action("GetCities")",
dataType: "json",
contentType: "application/json; charset=utf-8",
method: "POST",
data: "{'RegionId': " + $("#Region").val() + ", 'Name': '" + request.term + "'}",
success: function (data) {
response( $.map( data, function( item ) {
return {
label: item.Name,
value: item.Name
}
}));
},
error: function(XMLHttpRequest, textStatus, errorThrown) {
alert(textStatus);
}
});
},
minLength: 2
});
});
回应(来自萤火虫)
[{"CityId":16,"Name":"Kordíky"},{"CityId":94,"Name":"Korytárky"}]
答案 0 :(得分:0)
所以我发现它工作正常,唯一的问题是,我在visual studio中有断点,这个断点正在压制自动完成建议列表。
答案 1 :(得分:-1)
对于Mvc Artitecture,你必须删除已经imbended @ Scripts.Render(&#34;〜/ bundles / Jquery&#34;)和@ Scripts.Render(&#34;〜/ bundles / Jqueryval&#34;) 最后的所有.cshtml文件,以及视图/共享/ _layout.cshtml 结束并把我们的jaquery合适的文件放在他的合适的.cshtmls文件头上...然后让我们享受。