我正在使用TokenInput和MVC 3 C#。
我想让这个JQuery工作,但它从来没有将字符串传递给我的控制器类中的输入框中的方法。我做错了什么。
Create.cshtml
<input type="text" id="authorlist" name="q" data-autocomplete="@Url.Action("GetAuthors", "Author")" />
AuthorController.cs
public ActionResult GetAuthors(string term)
{
term = term.ToUpper();
var authors = db.AUTHOR
.Where(a => a.FULL_NAME.ToUpper().StartsWith(term))
.Select(a => new { id = a.AUTHOR_ID, name = a.FULL_NAME});
return Json(authors, "application/json", Encoding.UTF8, JsonRequestBehavior.AllowGet);
}
使用Javascript / Jquery的
$("#authorlist").tokenInput('/author/getauthors/' + $(this).val(), {
hintText: "Select Authors",
searchingText: "Searching..."
});
通过实际调用数据自动完成值并以这种方式触发ActionResult,我更倾向于以更MVC的方式使用JQuery,但是我迷路了,你可以看到:
$("#authorlist").tokenInput($(this).attr("data-autocomplete"), {
hintText: "Choose authors"
});
有人可以帮忙吗?
答案 0 :(得分:3)
问题在于您的网址构建,因为TokenInput默认使用查询参数q
,但在您的操作中,您使用的是term
。
你有两个选择:
更改操作签名:
public ActionResult GetAuthors(string q)
{
}
配置TokenInput:
$("#authorlist").tokenInput($(this).attr("data-autocomplete"), {
queryParam: 'term',
hintText: "Choose authors"
});