【问题标题】:AutoComplete Controller Action not being called未调用自动完成控制器操作
【发布时间】:2014-04-13 06:00:21
【问题描述】:

我有一个链接到自动完成处理程序的编辑框,当我键入任何字符时,控制器方法本身不会调用并且它甚至也不起作用。

jQuery

$("#NameInput").autocomplete({
    minChars: 3,
    delay: 100,
    cacheLength: 25,
    autoFill: true,
    source: function (request, response) {
        $.ajax({
            url: "/Data/GetNames", dataType: "json",
            data: { id: request.term },
            success: function (data) {
                response($.map(data, function (item) {
                    return { label: item.label, value: item.id }; //updated code
                }));
            }
        });
    },
    select: function (event, ui) {
        return false;
    }
});

这里是控制器方法。

C#

[RequiresRole(Roles = "su, da, rv, sp, dg, ap, ua")]
[AcceptVerbs(HttpVerbs.Get)]
public string GetNames(string term )
{
    //perform DB operations
    return String.Empty;
}

ASPX

<input type="text" name="NameInput" id="NameInput" class="NameInputField" maxlength="80" tabindex="3" />

这里getNames 方法本身没有调用,在启动时我只是注册自动完成处理程序。会有什么问题?

【问题讨论】:

    标签: javascript jquery asp.net asp.net-mvc autocomplete


    【解决方案1】:

    据我所知,问题在于您的 ajax 调用。在您传递的数据中,您将request.term 分配给id - 但您的控制器方法正在寻找一个名为term 的参数。

    更改您的 ajax
    data: { id: request.term }
    

    data: { term: request.term }
    

    或者,从

    更改您的控制器方法
    public string GetNames(string term)
    

    public string GetNames(string id)
    

    【讨论】:

    • 嗨,我很困惑,如果我制作数据:{ term: request.term } 并且如果我收到 id,那么块中的参考 id 在哪里?即 data: { term: request.term } in this no id identifier is found。它会起作用吗?
    • 它不起作用,我们是否需要在每次编辑框中的文本更改时调用自动完成?或者一旦你注册它就足够了??
    • jQuery 将为您做管理。您只需要执行两种建议方法中的一种即可。
    • 嗨,我尝试了上面的代码,仍然没有运气,我的代码有什么问题吗?为什么会失败?
    【解决方案2】:

    我认为您的 url "/Data/GetNames" 有问题,您应该将其更改为 "/Data.aspx/GetNames" 和

    [RequiresRole(Roles = "su, da, rv, sp, dg, ap, ua")]
    [AcceptVerbs(HttpVerbs.Get)]
    [System.Web.Services.WebMethod]
    public string GetNames(string term )
    {
      //perform DB operations
      return String.Empty;
    }
    

    也是好文章Calling ASP.Net WebMethod using jQuery AJAX

    【讨论】:

    • 不,不必这样,我也尝试过不使用它,因为 clickevent 及其所有工作正常
    【解决方案3】:

    这取决于您使用的插件,我使用的是插件http://bassistance.de/jquery-plugins/jquery-plugin-autocomplete/

    所以,我找到了解决方案,这里是演示示例http://jquery.bassistance.de/autocomplete/demo/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多