3

我正在使用 TokenInput 和 MVC 3 C#。

我想让这部分 JQuery 工作,但它永远不会从输入框中将字符串传递给我的控制器类中的方法。我究竟做错了什么。

创建.cshtml

<input type="text" id="authorlist" name="q" data-autocomplete="@Url.Action("GetAuthors", "Author")" />

作者控制器.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"        
    });

任何人都可以帮忙吗?

4

1 回答 1

3

问题在于您的 url 构建,因为 TokenInputq默认使用查询参数,但在您的操作中使用的是term.

你有两个选项:

更改动作签名:

public ActionResult GetAuthors(string q)
{
}

配置令牌输入:

$("#authorlist").tokenInput($(this).attr("data-autocomplete"), {
        queryParam: 'term',
        hintText: "Choose authors"        
    });
于 2012-05-31T09:00:14.880 回答