2015-11-05 81 views
1

自動完成代碼編寫得到控制器的結果,並且在使用F12開發人員網絡選項卡和瀏覽器時也顯示。但實際返回的結果不是由文本框顯示的,只顯示沒有值的下拉列表。 我包括視圖和控制器的代碼。請幫我解決這個問題。自動完成未顯示控制器在asp.net MVC中的結果

代碼視圖頁:控制器的

<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在文本框中。

的執行自動完成功能,當以下的輸出PIC

This is output when the code is run autocomplete is firing but the result is not shown in the right manner

回答

0

該位在你的控制器動作:

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 
相關問題