高级自动完成输入

时间:2012-05-30 12:38:16

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

只是学习MVC3和JQuery的方法,我需要做一些相当高级的东西,但我认为没有其他任何人以前做过的事情。所以,如果你可以指出我的方向很好。

我有一个文本框,其中包含我已设法使用数据库中的自动完成列表(使用EF4的Oracle)填充的作者列表。非常好。但我需要以此为基础。

enter image description here

基本上用户需要:

  • 选择1位或多位作者(自动填充)
  • 所选作者应以某种方式持久存在(例如列表等)
  • 用户需要能够删除已添加的作者。
  • 如果用户添加了不在列表中的作者,则需要以某种方式将其指定为新用户(至少我需要在代码中知道),这应该适当地插入到作者表中。 / LI>
  • 在后台我需要保留一个带有作者姓名的ID链接(来自数据库),这样我就可以正确地更新数据库了。这可能是对previuos点的回答的一部分,因为新作者将没有ID,所以请插入声明。

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

更新

所以经过一段时间的狩猎之后 - 我想我找到了一个很好的插件,它可以完成我想要的绝大多数 - 它叫做tokenInput。不知道如何格式化JSON,因为它需要特定的格式,并且不确定是否也可以指定新作者。但是现在就试试吧......

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

1 个答案:

答案 0 :(得分:0)

为了格式化为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>