【问题标题】:Why my AutoComplete control is not call?为什么我的自动完成控件没有被调用?
【发布时间】:2012-04-04 19:02:49
【问题描述】:

我已经关注了这个tutorial...

我的控制器的方法“名称”从不调用...

代码如下:

查看

<script src="@Url.Content("~/Scripts/jquery.autocomplete.js")" type="text/javascript"> </script>
<link href="@Url.Content("~/Scripts/jquery.autocomplete.css")" rel="stylesheet" type="text/css" />

<script type="text/javascript">
$(document).ready(function () {
          $("#Name").autocomplete('@Url.Action("Name", "Reservation")', { minChars: 3   });//Never call... When I put a simple alert, it works !
});
</script>

<div class="editor-label">
    @Html.LabelFor(model => model.Customer.Name)
</div>
<div class="editor-field">
    @Html.EditorFor(model => model.Customer.Name)

</div>

控制器方法

public ActionResult Name(string q)
{
        var customers = (from c in db.Customers where c.Name.Contains(q) select c.Name).Distinct().Take(10);
        string content = string.Join<string>("\n", customers);
        return Content(content);
}

我迷路了...你能帮我找出我做错了什么吗?提前谢谢...

他终于达到了我的控制器的方法!但他从不显示输入文本对应的列表:(

更新 16:04

【问题讨论】:

  • 他终于达到了我的控制器的方法!但他从不显示与输入文本对应的列表:(

标签: c# asp.net-mvc-3 jquery-ui razor autocomplete


【解决方案1】:

生成的输入的 ID:

@Html.EditorFor(model => model.Customer.Name)

不仅仅是Name,而是Customer_Name

$(document).ready(function () {
          $("#Customer_Name").autocomplete('@Url.Action("Name", "Reservation")', { minChars: 3   });//Never call... When I put a simple alert, it works !
});

这里似乎有些混乱,您正在遵循的教程使用 jQuery 自动完成,但您似乎正在使用 jQuery UI 自动完成。两者略有不同,使用默认选项:

jQuery-UI 自动完成

(http://jqueryui.com/demos/autocomplete/):

<script type="text/javascript">
    $(document).ready(function () {
        $("#Customer_Name").autocomplete({ source: '@Url.Action("Name", "Reservation")', minLength: 3 });
    });
</script>

public ActionResult Name(string term)
{
    var customers = ...get a list of customer names filtered by term
    return Json(customers, JsonRequestBehavior.AllowGet);
}

jQuery 自动完成

(https://github.com/dyve/jquery-autocomplete)

<script type="text/javascript">
    $(document).ready(function () {
        $("#Customer_Name").autocomplete('@Url.Action("Name", "Reservation")', { minChars: 3 });
    });
</script>

public ActionResult Name(string q)
{
    var customers = ...get a list of customer names filtered by q
    return Content(string.Join("\n", customers));
}

【讨论】:

  • 谢谢!终于他达到了我的控制器的方法!但他从不显示与输入文本对应的列表:(
  • 您的客户查询是否肯定返回至少一个名称(并且您在输入框中输入 > 2 个字符)?
  • 我的查询为空,因为“字符串 q”为空!他没有得到输入文本:(
  • 您使用的是哪个版本的 jQuery 和 jQuery 自动完成功能?使用最新版本(jQuery 1.7.1,jQuery autocomplete master)我试了一下,q 设置正确。
  • 啊,好的。将public ActionResult Name(string q) 更改为public ActionResult Name(string term)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-17
  • 2021-03-30
  • 2020-06-08
  • 1970-01-01
  • 2016-10-11
  • 1970-01-01
相关资源
最近更新 更多