2010-03-10 95 views
1

我试图开发我的第一个ASP.NET MVC web应用程序,并遇到jquery ui自动填充小部件的问题。无法让Jquery ui自动填充小工具工作

目前我的表格中有一些文本框可以很好地适应自动填充功能。

我的 “做”(汽车品牌)文本框中的代码显示如下:

的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,一个只有标签和值字符串属性的对象。文档暗示这就是我应该返回到jquery,但它不想工作?任何人都可以给我任何建议/帮助吗?

+0

你成功调用的ActionResult? – 2010-03-10 10:13:16

+0

是的。每次我编辑Make文本框中的文本时,它都会触发ActionResult。 – Boob 2010-03-10 10:25:19

+0

你能发布一个链接到你正在使用的jQuery自动完成小部件的文档吗?您可能会以错误的格式返回您的json数据。 – 2010-03-10 23:24:05

回答

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); 
}