jquery - 在 asp.net mvc 中使用 jquery 自动完成文本框的问题

标签 jquery asp.net-mvc jquery-ui jquery-ui-autocomplete

我需要创建一个自动完成文本框来填充 ASP.Net MVC 应用程序中的客户名称。我认为的jQuery代码如下:

$(document).ready(function() {
    $("input#bldCustomerName").autocomplete({
        source: '<%= Url.Action("ListCustomers","Build") %>'
    });
});

我的 Controller 操作是:

public ActionResult ListCustomers(string term)
    {
        IList<HSTrader> lstTraders = new List<HSTrader>();
        Build objBld = new Build();
        string trdrType = Resources.Resource.TraderTypeCustomer;
        int trdrTypeId = objBld.GetTraderTypeByTraderTypeName(trdrType).Id;
        lstTraders = objBld.GetTradersByTraderType(trdrTypeId);

        var results = from m in lstTraders
                      where m.TraderName.StartsWith(term)
                      select m.TraderName; //new { label = m.TraderName, id = m.Id };

        return Json(results.ToArray(), JsonRequestBehavior.AllowGet);
    }

按键上, Controller 操作被执行,但列表不会出现在文本框下。我的实现有什么问题?

最佳答案

 $(document).ready(function () {
            $('input#bldCustomerName').autocomplete({
                source: function (request, response) {
                    $.ajax({
                        url: '/Build/ListCustomers', type: 'Get', dataType: 'json',
                        data: { term: request.term, maxResults: 10 },
                        success: function (data) {
                            response($.map(data, function (item) {
                                return { label: item.TraderName, value: item.TraderName, id: item.TraderName }

                                //return { label: item.d, value: item.d, id: item.d } 
                                //If it does not work then use this line. comment above line. it is for single dimension array (only one column.).
                            }))
                        }
                    });
                },
                select: function (event, ui) {

                }
            });
        });






        //BuildController
        [HttpGet]
        public JsonResult ListCustomers(string term, int maxResults)
        {
            IList<HSTrader> lstTraders = new List<HSTrader>();
            Build objBld = new Build();
            string trdrType = Resources.Resource.TraderTypeCustomer;
            int trdrTypeId = objBld.GetTraderTypeByTraderTypeName(trdrType).Id;
            lstTraders = objBld.GetTradersByTraderType(trdrTypeId);

            var results = from m in lstTraders
                          where m.TraderName.StartsWith(term)
                          select m.TraderName; //new { label = m.TraderName, id = m.Id };

            return Json(results.Take(maxResults).ToList(), JsonRequestBehavior.AllowGet);
        }

关于jquery - 在 asp.net mvc 中使用 jquery 自动完成文本框的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8254514/

相关文章:

javascript - 在 jQGrid 中报告用户错误

javascript - jQuery 用户界面 : How to pass values to dialog

jquery - 使用 jQuery 加载到 Div 中

javascript - 为什么我的 AJAX 错误没有返回 Webmethod 异常?

c# - ASP.net MVC Controller 不会返回 View

c# - 使用转换为字符串的数据列表填充 Html.TextBox

jquery - jqgrid 内联编辑仅在选定的单元格上进行,而不是在行上

javascript - jQuery UI 自动完成 : enforce selection from list without modifications

jquery - 如何获取最近输入Jquery的值

jquery - 如何使用 jQuery 使图像映射区域可点击?