【问题标题】:Advanced autocomplete input高级自动完成输入
【发布时间】:2012-05-30 12:38:15
【问题描述】:

我只是在 MVC3 和 JQuery 方面学习,我需要做一些相当高级的事情,但我认为其他人以前没有做过任何事情。所以,如果你能指出我正确的方向,那就太好了。

我有一个包含作者列表的文本框,我已设法使用数据库中的自动完成列表填充这些作者(Oracle 使用 EF4)。也很好。但我需要在此基础上再接再厉。

基本上用户需要:

  • 选择 1 位或多位作者(自动完成)
  • 应以某种方式保留所选作者(例如列表等)
  • 用户需要能够删除已添加的作者。
  • 如果用户添加了不在列表中的作者,则需要以某种方式将其指定为新用户(至少我需要在代码中知道),并且应该适当地将其插入作者表中。
  • 在后台,我需要保留带有作者姓名的 ID 链接(来自数据库),以便我可以正确更新数据库。这可能是对前面观点的回答的一部分,因为新作者没有 ID,所以插入语句。

希望这是有道理的,我不认为这很复杂,只是我不知道在哪里看和一些代码提示:)

更新

所以在四处寻找之后 - 我想我找到了一个不错的插件,它可以完成我想要的绝大多数工作 - 它称为 tokenInput。尚不确定如何格式化 JSON,因为它需要特定格式,也不确定指定新作者。但现在就试一试......

http://loopj.com/jquery-tokeninput/

【问题讨论】:

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


    【解决方案1】:

    为了格式化为 Json,您可以创建一个新的匿名对象集合,然后将其序列化为 json,我这样做是这样的:

    var anonymousList= from t in db.YourTable 
                                     where ... something ....
                                     select new
                                     {
                                         id=t.id,
                                         name=t.name
                                     };
    var serializer = new JavaScriptSerializer();
    var serialized = serializer.Serialize(anonymousList);
    return View(new ViewModel { Serialized = serialized });
    

    然后你应该将你的 json 返回到你的视图中,我通常会在我的 ViewModel 中添加一个参数。然后你需要将该字符串分配给一个 javascript 变量:

    <script>
        var myVariable = @Html.Raw(Model.Serialized);
    </script>
    

    【讨论】:

    • 嗨,我现在对代码有了更多了解,我发现你不需要做任何额外的工作来获得正确的格式,或者至少它理解默认的 JSON MVC 框架的输出。不过谢谢。
    猜你喜欢
    • 1970-01-01
    • 2013-06-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-14
    • 2020-08-21
    相关资源
    最近更新 更多