代码之家  ›  专栏  ›  技术社区  ›  Ryan Santos

自动完成无法在asp.net mvc中工作

  •  0
  • Ryan Santos  · 技术社区  · 10 年前

    我正在尝试创建一个文本框,当用户开始搜索某个名称时,该文本框会自动完成,但它不起作用。 以下是我的观点:

      <link href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/themes/cupertino/jquery-ui.css" type="text/css" rel="Stylesheet" />
        <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js" type="text/javascript"></script>
        <script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/jquery-ui.min.js" type="text/javascript"></script>
        <script type="text/javascript">
                $(document).ready(function () {
                    $("#txtSearch").autocomplete({
                        source: '@Url.Action("pesquisarUsuario")',
                        minLength: 0
                    });
                });
        </script>
    
    
    
    
    
    
    <h2>Index</h2>
    
    
    @using (@Html.BeginForm())
    {
        @Html.TextBox("pesquisa", null, new { id = "txtPesq" })
        <input type="submit" value="Pesquisar" />
    
    
    
    }
    

    这是我的控制器:

     public JsonResult pesquisarUsuario(string term)
                {
                    List<string> usuario;
    
                    usuario = db.usuario.Where(u => u.nomecompleto.StartsWith(term))
                        .Select(u => u.nomecompleto).ToList();
    
                    return Json(usuario, JsonRequestBehavior.AllowGet);
                }
    

    我错过了什么吗?因为当我开始写时,我的文本框不会显示任何用户。

    1 回复  |  直到 10 年前
        1
  •  1
  •   Artur Kedzior    10 年前

    如果 通常情况下 返回任何内容。:-)

    在浏览器中尝试: http://localhost:port/yourcontroller/pesquisarUsuario?term=t

    它应该返回所有以“t”开头的记录。

    如果它没有返回任何内容,这是您的问题。

    如果是,请尝试设置完整的url:

    $(document).ready(function () {
        $("#txtSearch").autocomplete({
            source: 'http://yourserver/yourcontroller/pesquisarUsuario',
            minLength: 0
        });
    });
    

    编辑 : 我用一个完整的示例创建了本教程: http://r2d2.cc/2014/09/11/autocomplete-jquery-ui-with-asp-net-mvc-simple-example/