【问题标题】:Autocomplete does not showing the results from controller in asp.net MVC自动完成不显示 asp.net MVC 中控制器的结果
【发布时间】:2016-02-06 19:50:12
【问题描述】:

编写的自动完成代码正在从控制器获取结果,并且在浏览器中使用 F12 开发人员网络选项卡时也会显示。但是文本框不显示实际返回的结果,只显示没有值的下拉列表。 我包括视图和控制器的代码。请帮我解决这个问题。

查看页面代码:

<html>
<head><title></title>
  <link href="~/Content/themes/base/jquery.ui.autocomplete.css" rel="stylesheet" />
    <script type="text/javascript" >
        $(document).ready(function () {
            alert("hi");
            $("#ValueField").autocomplete({
                source: function (request, response) {
                    $.ajax({
                        url: "/Customer/AutoretrieveCustomer",
                        type: "POST",
                        dataType: "json",
                        data: { term: request.term },
                        success: function (data) {
                            var items = $.map(data, function (item) {
                                return {
                                    label: item.FirstName,
                                    value: item.FirstName
                                };
                            });
                            response(items);
                        }
                    })
                }
            });
         });     
        </script>



</head>
<body>

    <div id="CusView">

            <label for="FirstName">Enter Customer First name : </label>
            Enter value : <input type="text"  id="ValueField" />


    </div>
</body>
</html> 

控制器代码:

[AcceptVerbs(HttpVerbs.Post)]
        public JsonResult AutoretrieveCustomer(string term)
        {
            Banking.BankingDBEntities db = new BankingDBEntities();

            var suggest = from s in db.Customers
                          select s.FirstName;
            var namelist = suggest.Where(n => n.ToLower().StartsWith(term.ToLower()));
            return Json(namelist, JsonRequestBehavior.AllowGet);

        }

我还需要获取文本框中用户选定项的 id 的代码。

执行自动完成时的输出图片如下

【问题讨论】:

    标签: c# jquery asp.net-mvc autocomplete jquery-ui-autocomplete


    【解决方案1】:

    控制器动作中的这一点:

    var suggest = from s in db.Customers
                          select s.FirstName;
    var namelist = suggest.Where(n => n.ToLower().StartsWith(term.ToLower()));
    

    意味着您的控制器操作实际上是返回一个字符串数组,而不是像 success 函数假设的对象数组。

    您应该能够删除映射并直接使用字符串数组调用response

    success: function (data) {
        response(data);
    }
    

    或者,只是:

    success: response
    

    【讨论】:

      猜你喜欢
      • 2021-02-07
      • 2015-04-07
      • 1970-01-01
      • 2013-03-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多