我正在尝试开发我的第一个ASP.NET MVC Web应用程序并遇到了jquery ui自动完成小部件的问题。
目前,我有一个带有多个文本框的表单,可以很好地适应自动完成功能。
我的“制作”(Car make)文本框的代码如下所示:
jquery的:
$(function() {
$("#Make").autocomplete({
source: '<%=Url.Action("Make","AutoComplete") %>'
});
});
ASP.NET MVC控制器:
public ActionResult Make(string term)
{
return Json(Service.GetHints(HintType.Make, term, 20));
}
GetHints()
返回一个IList of Hints,一个只有标签和值字符串属性的对象。文档暗示这是我应该返回到jquery,但它不想工作?任何人都可以给我任何建议/帮助吗?
答案 0 :(得分:2)
我也遇到过这个问题。您需要将ActionResult更改为JsonResult
在MVC 2中对JsonResult进行了更改,因此它将不再使用HTTP GET来避免JSON劫持。
因此,您可以更改代码以通过HTTP POST返回或允许GET行为,这可能会让您对JSON hijacking开放。
尝试修改代码以遵循格式
return Json(data, JsonRequestBehavior.AllowGet);
所以你的代码看起来像
public JsonResult Make(string term)
{
return Json(Service.GetHints(HintType.Make, term, 20), JsonRequestBehavior.AllowGet);
}