0

我知道那里有很多帖子,但我根本无法弄清楚我在自动完成中做错了什么。

我有一个像这样的 ProductController

public 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在控制器功能中。

你能弄清楚是什么错误吗?

4

1 回答 1

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是自动完成插件会识别的属性。您可以尝试使用valueand label,如我在示例中执行的投影所示。

于 2013-02-09T15:38:09.247 回答