您的位置:首页 > Web前端 > JQuery

Asp.net MVC 3+ Jquery UI Autocomplete实现百度效果

2011-10-21 17:34 701 查看
常见的示例很多,本文只是我的工作记录。

前台页面:

@{
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);

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: