老生常谈:Asp.net MVC 3+ Jquery UI Autocomplete实现百度效果
常见的示例很多,本文只是我的工作记录。
前台页面:
@{ 
    ViewBag.Title = "首页";    
}    
@section Header    
{    
    <script type="text/javascript">    
        $(document).ready(function () {    
            $("#keyword").autocomplete({    
                source:function (request, response) {    
                    $.ajax({    
                        url: "@Url.Action("Search", "Home")",  //要查询的Action     
                        type: "POST",  //Post提交     
                        dataType: "json", //json格式数据,默认是text     
                        data: { keyword:request.term}, //参数,不知道为什么?请指点
//data: {keyword:$("#keyword").val()},同样可以
success: function (data) {
response($.map(data, function (item) {
return { label: item.text, value: item.value}; //将返回的jsonresult的属性赋值给autocomplete item
}));
}
});
},
focus: function(event, ui) {
$('#keyword').val(ui.item.label); //选中item的文本
                 return false;   
                },    
                select: function(event, ui) {    
                     $('#keyword').val(ui.item.label);  //选中item的文本
                     $('#txtSelectValue').val(ui.item.value); //选中item的值     
                     return false;    
               }     
            });    
        });    
    </script>    
}    
关键字:    
@Html.TextBox("keyword", "")
@Html.Hidden("txtSelectValue") //智能查询选中的值
Action代码:
// GET: /Home/Index
// POST: /Home/Search
public ActionResult Index()
{
return View();
}
[HttpPost]
public ActionResult Search(string keyword)
{
//根据关键字查询,返回json格式对象集合
第一种方式:循环
List<object> items=new List<objects>();
var item=new {text="",value=""}
items.Add(item);
第二种方法:直接用linq to Entity添加
var dataList= organService.AddDataList();//获取数据列表
     items.AddRange(dataList.Select(o => new   
     {    
         text= o.NAME,    
         value= o.CODE.ToString()    
      }));
//---------------------------------------
return Json(items, JsonRequestBehavior.AllowGet);
}

                
            
        
浙公网安备 33010602011771号