在 ASP.NET MVC 3 中,Jquery 令牌输入未填充数据库中的值

Posted

技术标签:

【中文标题】在 ASP.NET MVC 3 中,Jquery 令牌输入未填充数据库中的值【英文标题】:Jquery Token Input not populating values from database, in ASP.NET MVC 3 【发布时间】:2012-08-16 11:05:24 【问题描述】:

我是 jQuery 令牌输入的新手,正在通过 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;
    

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

编辑:Contact是EntityFramework生成的一个实体模型类,有一个叫做'id'的int字段和两个叫做'city'和'name'的字符串字段。

【问题讨论】:

你的Contact 班级怎么样? 你调试了吗?你接到了控制器上的电话?? 能否贴出Contact类的实际代码?因为我认为您的问题在于属性名称大小写.... 是的......你必须拥有! :P 解决了!只需要以特定方式输出 json .. :) 谢谢! 【参考方案1】:

更新: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",
    ...
]

【讨论】:

【参考方案2】:

这对我有用:

在视图中:

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

【讨论】:

以上是关于在 ASP.NET MVC 3 中,Jquery 令牌输入未填充数据库中的值的主要内容,如果未能解决你的问题,请参考以下文章

自定义 asp.net mvc 3 jquery.validate.unobtrusive

ASP.Net MVC在AspNet Mvc使用JQuery AutoComplete组件

ASP.NET MVC 3 - Ajax.BeginForm 与 jQuery 表单插件

在 ASP.NET MVC Core 3.1 中通过 jQuery 为部分视图附加 html 的问题

ASP.net MVC 3 jQuery 验证;禁用不显眼的 OnKeyUp?

在 asp.net mvc razor 页面中验证 jquery 中的特定表单字段