使用 JSON 自动完成 ASP.NET MVC
Autocomplete ASP.NET MVC with JSON
我正在尝试为我的页面添加自动完成功能。
我有一个文本框,我想从我的数据库中提出建议。
我的控制器中有这个 JsonResult:
public JsonResult ItemAutocomplete(string term)
{
var result = _db.SelectTable("SELECT [i].[Name] from [dbo].[Item][i] WHERE [i].[Name] LIKE @0", SqlDb.Params(term +"%"));
return Json(result, JsonRequestBehavior.AllowGet);
}
在我看来:
@Scripts.Render("~/bundles/jqueryui")
<h2>jQuery AutoComplete</h2>
<script>
$(function () {
$('#tags').autocomplete({
source: function (request, response) {
$.ajax({
url: '@Url.Action("ItemAutocomplete")',
extraParams: { term: $('#tags').val(),
dataType: "json",
contentType: 'application/json, charset=utf-8',
data: {
term: $("#tags").val()
},
success: function (data) {
response($.map(data, function (item) {
return {
label: item
};
}));
},
error: function (xhr, status, error) {
alert(error);
}
});
},
minLength: 2
});
});
</script>
<div class="ui-widget">
<label for="tags">Tags: </label>
<input id="tags" />
</div>
问题是我的 ItemAutocomplete jsonResult 总是收到一个空参数...即使我直接从本地主机调用它,如下所示:"localhost/Appointment/ItemAutocomplete/item1".
使用下面的 (request.term)
data: { term: request.term }
而不是
data: { term: $('#tags').val() }
在自动完成文本框中,搜索字符串由 "request.term" 检测。
我正在尝试为我的页面添加自动完成功能。 我有一个文本框,我想从我的数据库中提出建议。
我的控制器中有这个 JsonResult:
public JsonResult ItemAutocomplete(string term)
{
var result = _db.SelectTable("SELECT [i].[Name] from [dbo].[Item][i] WHERE [i].[Name] LIKE @0", SqlDb.Params(term +"%"));
return Json(result, JsonRequestBehavior.AllowGet);
}
在我看来:
@Scripts.Render("~/bundles/jqueryui")
<h2>jQuery AutoComplete</h2>
<script>
$(function () {
$('#tags').autocomplete({
source: function (request, response) {
$.ajax({
url: '@Url.Action("ItemAutocomplete")',
extraParams: { term: $('#tags').val(),
dataType: "json",
contentType: 'application/json, charset=utf-8',
data: {
term: $("#tags").val()
},
success: function (data) {
response($.map(data, function (item) {
return {
label: item
};
}));
},
error: function (xhr, status, error) {
alert(error);
}
});
},
minLength: 2
});
});
</script>
<div class="ui-widget">
<label for="tags">Tags: </label>
<input id="tags" />
</div>
问题是我的 ItemAutocomplete jsonResult 总是收到一个空参数...即使我直接从本地主机调用它,如下所示:"localhost/Appointment/ItemAutocomplete/item1".
使用下面的 (request.term)
data: { term: request.term }
而不是
data: { term: $('#tags').val() }
在自动完成文本框中,搜索字符串由 "request.term" 检测。