jQuery autocomplete将null参数传递给ASP.NET MVC 2中的控制器

Moh*_*mad 8 asp.net-mvc jquery autocomplete

我正在使用jQuery 网站上的 jQuery autocomplete插件 调用控制器url,返回json.问题是发送到控制器的参数始终为null.

以下是自动完成的浏览器内jQuery代码:

$(document).ready(function() {
    var url = "/Building/GetMatchedCities";
    $("#City").autocomplete(url);
});
Run Code Online (Sandbox Code Playgroud)

这是C#中的ASPNET MVC控制器签名:

public JsonResult GetMatchedCities(string city)
{
    ..
    return this.Json(query, JsonRequestBehavior.AllowGet);
}
Run Code Online (Sandbox Code Playgroud)

提前致谢,

穆罕默德

tjp*_*p69 9

我有同样的问题.在Fiddler中查看JQuery创建的URL之后,我发现它看起来像这样:/ MyController/MyMethod?term = x.所以我改变了我的方法签名,使用参数名称'term'而不是'q'('q'显示在JQuery网站自动完成示例中.).这解决了问题,我仍然能够返回我需要的JsonResult.

    public JsonResult MyMethod(string term) 
    {
        ...
        return Json(query, JsonRequstBehavior.AllowGet);
    }
Run Code Online (Sandbox Code Playgroud)


amu*_*rra 4

尝试将城市数据添加为 extraParms:

$("#City").autocomplete(url, {
extraParams: { city: $('#City').val() }
});
Run Code Online (Sandbox Code Playgroud)

这是假设使用 .val 时 $('#City') 是文本类型的输入

-- 已编辑 --

根据您的反馈,答案是:

控制器应该是:

public JsonResult GetMatchedCities(string q)
{
    ..
    return this.Json(query, JsonRequestBehavior.AllowGet);
}
Run Code Online (Sandbox Code Playgroud)

jquery 将是:

 $(document).ready(function() { 
    var url = "/Building/GetMatchedCities"; 
    $("#City").autocomplete(url); 
 });
Run Code Online (Sandbox Code Playgroud)