我正在尝试使用jquery自动完成功能在ASP.NET MVC中创建自动完成功能文本框。
这是我的Index.cshtml:
<div class="autocomplete">
@Html.TextBox("item", null, new { id = "autocomplete-textbox", @class = "form-control" });
<input type="submit" value="Submit" id="autocomplete-button"/>
</div>
<script>
$(function() {
$('#autocomplete-textbox').autocomplete({
source: '@Url.Action("AutoComplete")',
minlength: 1
});
});
</script>
这是我的家庭控制器方法:
public JsonResult AutoComplete(string item)
{
IEnumerable<string> itemsList = new[] { "Ana", "are", "mere", "pere", "papaia", "Aaa", "Ab", "An" };
IEnumerable<string> filteredResults = null;
if (string.IsNullOrEmpty(item))
{
filteredResults = itemsList;
}
else
{
filteredResults = itemsList.Where(s => s.IndexOf(item, StringComparison.InvariantCultureIgnoreCase) >= 0);
}
return Json(filteredResults, JsonRequestBehavior.AllowGet);
}
我的问题是JsonResult AutoComplete中的参数项始终为null,因此我总是以JSON响应的形式获取整个列表。我能做些什么 ?
谢谢,马库斯
默认情况下,jQuery自动完成插件将发送带有查询字符串参数term
而不是item的输入值(如果打开浏览器dev tools-> network选项卡,则可以看到此信息)。
因此,将您的服务器操作方法参数名称更改为 term
public JsonResult AutoComplete(string term)
{
// use term for your checkings
// to do : Return something
}
另外,我注意到您的代码中还有另一个问题。如果术语变量不为空,则需要将过滤后的结果(Where方法调用的结果)设置为filteredResults
变量,因为它是您要返回的结果。
if (string.IsNullOrEmpty(term))
{
filteredResults = itemsList;
}
else
{
filteredResults = itemsList
.Where(s => s.IndexOf(term, StringComparison.InvariantCultureIgnoreCase) >= 0);
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句