簡體   English   中英

ASP.NET MVC:jQuery UI自動完成錯誤地顯示所有條目

[英]ASP.NET MVC: jQuery UI Autocomplete incorrectly showing all entries

我閱讀了該主題,並研究了錯誤和應該起作用的示例。 此后,我嘗試自己構建它,autcomplete可以工作,但是它總是顯示所有條目,而不是僅顯示與數據庫中搜索匹配的條目。

因此,以下是控制器代碼,該代碼返回了我的自動完成功能的數據:

public JsonResult AutoCompleteCustomer(string suggestion)
        {
            var data = db.Customers.Where(s => suggestion == null || s.Name.ToLower().Contains(suggestion.ToLower())).Select(x => new { id = x.CustomerID, value = x.CustomerName }).Take(20).ToList();

            return Json(data, JsonRequestBehavior.AllowGet);
        }

我的自動完成jQuery UI功能代碼:

<script>
    $("#CustomerName").autocomplete({
        source: "/Customer/AutoCompleteCustomer",
        minLength: 3
    })
</script>

視圖中的TextBox應該具有自動完成功能:

@Html.TextBoxFor(m => m.CustomerName)

如果您需要更多代碼或信息,請告訴我,我們將盡快提供。 謝謝!

您的控制器動作的參數名稱錯誤,應為term

public JsonResult AutoCompleteCustomer(string term)
    {
        var data = db.Customers.Where(s => term== null || s.Name.ToLower().Contains(term.ToLower())).Select(x => new { id = x.CustomerID, value = x.CustomerName }).Take(20).ToList();

        return Json(data, JsonRequestBehavior.AllowGet);
    }

因為此刻它是不正確的,所以它將始終為NULL,這就是為什么您的自動完成功能可以正常工作,但始終返回所有結果的原因,因為此條件suggestion == null始終為true。

如果您真的想堅持suggestion作為控制器參數,則需要在AJAX配置中明確定義此參數:

<script>
    $("#CustomerName").autocomplete({
        source: "/Customer/AutoCompleteCustomer",
        data: { suggestion: request.term },
        minLength: 3
    })
</script>
var data = (from Customers in db.Customers Where s.Name.ToLower().Contains(suggestion.ToLower()) select  new { id = Customers.CustomerID, value = Customers.CustomerName }).ToList().Take(20);

嘗試這個

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM