Jquery Token输入不在ASP.NET MVC 3中填充数据库中的值

时间:2012-08-21 06:03:15

标签: jquery asp.net-mvc-3 jquery-tokeninput

我是jQuery Token Input的新手,正在通过this教程学习。

我想做什么?

我想显示数据库中的值,因为用户使用jQuery Token输入将值键入文本框。

到目前为止我尝试了什么?

到目前为止,这是我的观点......

查看

<p>
Getting data from database using <i>token Input</i> =>
<input type="text" id="selectDb" />
</p>

<script type="text/javascript">
    $(document).ready(function () {

        $("#selectDb").tokenInput("@Url.Action("Search")");

    });
</script> 

</div>

以下是我的控制器操作。

控制器代码

[HttpGet]
public JsonResult Search(string q)
{
    var searchResult = Helper.SearchContact(q);
    return Json(searchResult, JsonRequestBehavior.AllowGet);
}

和我的Helper.cs类代码是......

public static class Helper
{
    public static CRUDEntities1 Entities = new CRUDEntities1();

    public static IEnumerable<Contact> SearchContact(string s)
    {
        var searchResults = Entities.Contacts.Where(item => item.Name.Contains(s));

        return searchResults;
    }
}

我不确定自己哪里出错了,请指导我。感谢。

编辑:联系是由EntityFramework生成的实体模型类,有一个名为“id”的int字段和两个名为“city”和“name”的字符串字段。

2 个答案:

答案 0 :(得分:3)

更新:Using jQuery Tokeninput with ASP.NET MVC 3 Razor

感谢@bhuvin和其他人。

解决了,不得不这样做......

[HttpGet]
public JsonResult Search(string q)
{
    var searchResults = Helper.SearchContact(q);
    var jsonResult = searchResults.Select(results => new { id = results.Id, name = results.Name, city = results.City });
    return Json(jsonResult, JsonRequestBehavior.AllowGet);
}

在TokenInput的文档here中找到了它。

您的脚本应按以下格式输出JSON搜索结果:

[
    {"id":"856","name":"House"},
    {"id":"1035","name":"Desperate Housewives"},
    ...
]

答案 1 :(得分:1)

这对我有用:

在视图中:

<h2 id="theme">Facebook Theme</h2>
<div>
    <input type="text" id="authorlist" name="q" data-autocomplete="@Url.Action("GetAuthors", "Home")" />

</div>

在脚本(javascript)

<script type="text/JavaScript">
    $(document).ready(function() {

        $("#authorlist").tokenInput("@Url.Action("Search")", {
            theme: "facebook",
            preventDuplicates: true
        });

    });
</script>

在控制器中:

[HttpGet]
public JsonResult Search(string q)
{
    q = q.ToUpper();
    var authors = db.StudentDB
        .Where(a => a.name.ToLower().StartsWith(q))
        .Select(a => new { id = a.id, name = a.name });

    return Json(authors,  JsonRequestBehavior.AllowGet);
}