我很抱歉這是一種重複,但是,即使在查看關於該主題的其他幾個問題之後,我仍然無法獲得我的工作。使用JQuery和數據庫自動完成 - APS.NET MVC
我想在我的表單中使用JQuery自動完成小部件從數據庫中的30K +記錄中進行選擇。我相信我的問題出現在.autocomplete
函數的source
左右。
HTML + JS
@using (Html.BeginForm())
{
@Html.LabelFor(model => model.Name)
@Html.TextBoxFor(model =>model.Name, new { id="Search"})
}
<script type="text/javascript">
$('#Search').autocomplete({
source: '@Url.Action("GetVendors", "TestAutoComplete")',
minLength: 3
});
</script>
控制器動作
[HttpGet]
public JsonResult GetVendors(string Search)
{
return Json(DB.VendorLookUp(Search), JsonRequestBehavior.AllowGet);
}
我知道我的DB.VendorLookUp方法的工作(我單獨測試它),我有沒有按該GetVendors方法中的斷點不會受到打擊。
在控制檯中我得到這個錯誤:
GET http://localhost:50848/TestAutoComplete/GetVendors?term=mic 500 (Internal Server Error)
(其中 '麥克風' 是我試圖搜索)。 我假設問題的至少一部分是我的控制器方法是除了字符串「搜索」,當JS正在嘗試獲取「術語」。
在此先感謝您的幫助。
編輯: 事情我已經嘗試:
- 改變參數在我的控制器行動「搜索」到「術語」
- 由於沒有在我的控制器行動
- 更新任何參數@ Url.Action()沿值傳遞給:
source: '@Url.Action("GetVendors", "TestAutoComplete", new {Search= $('#VendorSearch').val() })'
- ,但得到的錯誤
Invalid anonymous type member declarator. Anonymous type members must be declared with a member assignment, simple name or member access.
UPDATE:
多虧了評論意見,望着通過網絡錯誤 - >檢查響應了我一個有意義的錯誤。我試圖趕上js調用,我可以有2個控制器動作 - 一個帶有參數,另一個帶無參數。這使代碼混淆。我刪除了沒有參數的動作,現在控制器動作正常運行,DB.VendorLookUp返回Vendor_VM列表(控制器正確地轉換爲JSON對象)。
但是,結果沒有正確返回 - 請參閱下面的圖3。選項不在下拉列表中,並且不顯示任何值。
- 如何更新cshtml/js以將名稱傳遞給輸入表單?
- 如何讓這些值以適當的下拉方式顯示?
更改方法'公共JsonResult GetVendors(字符串項)' –
我已經試過了。仍然得到錯誤:'GET HTTP://本地主機:50848/TestAutoComplete/GetVendors項=麥克風500(內部服務器錯誤)'當我控制器操作如下:?'[HTTPGET] 公共JsonResult GetVendors(字符串項) { 返回Json(DB.VendorLookUp(term),JsonRequestBehavior.AllowGet); }' – swallis1
然後你的'VendorLookUp()'方法拋出一個異常。使用您的瀏覽器工具(網絡選項卡檢查結果,其中將包括錯誤的詳細信息) –