JQuery自动完成+;Asp.NETMVC
我正在Asp.NETMVC项目中使用JQuery自动完成插件。到目前为止,我从搜索方法返回了一个字符串列表,这些字符串显示正确 我认为:JQuery自动完成+;Asp.NETMVC,jquery,asp.net-mvc-2,jquery-ui-autocomplete,Jquery,Asp.net Mvc 2,Jquery Ui Autocomplete,我正在Asp.NETMVC项目中使用JQuery自动完成插件。到目前为止,我从搜索方法返回了一个字符串列表,这些字符串显示正确 我认为: <script type="text/javascript"> $(function () { $("#search").autocomplete({ source: '<%: Url.Action("Search") %>', minLength: 1
<script type="text/javascript">
$(function () {
$("#search").autocomplete({
source: '<%: Url.Action("Search") %>',
minLength: 1
});
});
</script>
$(函数(){
$(“#搜索”).autocomplete({
来源:“”,
最小长度:1
});
});
控制器:
public JsonResult Search(string term)
{
//search Code here ...
var dt = ....;
var result = new List<string>();
//search Code returns a DataTable, which I convert into a List<string>
for (int i = 0; i < dt.Rows.Count; i++)
{
result.Add(...);
}
//return List<string> to the autocomplete plugin
return Json(result, JsonRequestBehavior.AllowGet);
}
publicjsonresult搜索(字符串术语)
{
//搜索代码在这里。。。
var dt=。。。。;
var result=新列表();
//搜索代码返回一个数据表,我将其转换为一个列表
对于(int i=0;i
我想知道是否可以返回DataTable对象并在HTML表中显示DataTable。或者可以返回HTML表吗?有人试过这样的东西吗
非常感谢
Jaspis您可以查看示例。步骤1:准备好Web Api 让我们首先创建一个web api方法,该方法将使用从自动完成文本框发送的搜索词查询返回项目(艺术家)列表。在这篇文章中,我并没有使用数据库,相反,我将使用列表使这个例子尽可能简单 下面是我如何定义我的艺术家类
public class Artist
{
public int Id { get; set; }
public int Name { get; set; }
}
接下来,我创建了一个Web Api GET方法,该方法将使用在“自动完成”文本框中输入的搜索词,并在LINQ的帮助下返回匹配结果的列表
using System.Collections.Generic;
using System.Linq;
using System.Web.Http;
namespace Autocomplete.Controllers
{
public class ArtistApiController : ApiController
{
public List<Artist> ArtistList = new List<Artist>
{
new Artist{Id = 1, Name = "Sonu Nigam"},
new Artist{Id = 2, Name = "Sunidhi Chauhan"},
new Artist{Id = 3, Name = "Shreya Goshal"},
new Artist{Id = 4, Name = "Mohit Chauhan"},
new Artist{Id = 5, Name = "Nihkil Dsouza"},
new Artist{Id = 6, Name = "Kailash Kher"},
new Artist{Id = 7, Name = "Atif Aslam"},
new Artist{Id = 8, Name = "Ali Zafar"},
new Artist{Id = 9, Name = "Shafaqat Ali"},
new Artist{Id = 10, Name = "Shankar Madahevan"}
};
// GET api/values
public IEnumerable<Artist> Get(string query)
{
return ArtistList.Where(m => m.Name.Contains(query)).ToList();
}
}
}
之所以使用data.Id和data.Name,是因为在ajax响应(如下所示)中,数据是以这种格式返回的
步骤3:测试和输出:
取自
<script type="text/javascript" src="~/Scripts/jquery-1.7.1.min.js" ></script>
<script type="text/javascript" src="~/Scripts/jquery-ui-1.8.20.min.js" ></script>
<link href="~/Content/themes/base/jquery.ui.all.css" rel="stylesheet" />
<div id="body">
<label for="autocomplete-textbox">Search : </label>
<input type="text" id="autocomplete-textbox" />
</div>
<script type="text/javascript">
$(document).ready(function (){
$('#autocomplete-textbox').autocomplete({
source: function (request, response) {
// prepare url : for example '/api/artistapi?query=sonu
var autocompleteUrl = '/api/artistapi' + '?query=' + request.term;
$.ajax({
url: autocompleteUrl,
type: 'GET',
cache: false,
dataType: 'json',
success: function (json) {
// call autocomplete callback method with results
response($.map(json, function (data, id) {
return {
label: data.Name,
value: data.Id
};
}));
},
error: function (xmlHttpRequest, textStatus, errorThrown) {
console.log('some error occured', textStatus, errorThrown);
}
});
},
minLength: 2,
select: function (event, ui) {
alert('you have selected ' + ui.item.label + ' ID: ' + ui.item.value);
$('#autocomplete-textbox').val(ui.item.label);
return false;
}
});
});
</script>
response($.map(json, function (data, id) {
return {
label: data.Name,
value: data.Id
};
}));