我知道那里有很多帖子但只是我无法弄清楚我在自动完成时做错了什么。
我有一个类似
的ProductControllerpublic JsonResult AutocompleteMethod(string searchstring) //searchString null here
{
Product ob=new Product();
List<Product> newLst = ob.GetProducts();
var suggestions = from s in newLst select s.productName ;
var namelist = suggestions.Where(n=>n.StartsWith(searchstring));
return Json(namelist, JsonRequestBehavior.AllowGet);
}
在视图中我有:
<p>
Find by name:<%: Html.TextBox("Txt") %>
</p>
<link rel="stylesheet" href="http://code.jquery.com/ui/1.10.0/themes/base/jquery-ui.css" />
<script src="http://code.jquery.com/jquery-1.8.3.js" type="text/javascript"></script>
<script src="http://code.jquery.com/ui/1.10.0/jquery-ui.js" type="text/javascript"></script>
<script type="text/jscript">
$(function () {
debugger;
$('#Txt').autocomplete({ source: '/Product/AutocompleteMethod' });
});
</script>
但控制器功能中始终 SearchString 为NULL
。
你能弄明白这是什么错误吗?
答案 0 :(得分:1)
AFAIK参数名为term
,而不是searchstring
,因此:
public ActionResult AutocompleteMethod(string term)
{
List<Product> newLst = new Product().GetProducts();
var namelist =
from p in newLst
where p.StartsWith(term)
select new
{
value = p.Id, // you might need to adjust the Id property name here to match your model
label = p.productName
};
return Json(namelist, JsonRequestBehavior.AllowGet);
}
此外,我非常怀疑productName
是自动完成插件将识别的属性。您可以尝试使用value
和label
,如我在示例中执行的投影所示。