0

我想在 asp.net mvc4 应用程序中使用自动完成小部件。我能够调用该操作以从控制器获取自动完成值列表。不幸的是,我无法将其添加到建议列表中。我认为自动完成 ajax 调用的成功部分中的 .map(data, function(item) 不起作用。但我真的不知道为什么。我确信所有脚本和 css 都正确加载。我说的是控制器动作返回建议列表,还有视图中的脚本和来自 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"}]
4

2 回答 2

0

所以我发现它正在工作,唯一的问题是,我在 Visual Studio 中有断点,而这个断点正在抑制自动完成建议列表。

于 2013-09-16T07:58:36.073 回答
-1

对于 Mvc Artitecture,您必须在最后删除所有 .cshtml 文件上已经嵌入的 @Scripts.Render("~/bundles/Jquery") 和 @Scripts.Render("~/bundles/Jqueryval") 以及视图/Shared/ _layout.cshtml 放在最后,然后把我们的 jaquery 合适的文件放在他合适的 .cshtmls 文件的头上......让我们尽情享受吧。

于 2017-01-05T06:21:26.287 回答