2015-11-05 80 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 
相关问题