2012-05-30 129 views
0

只是学习了解MVC3和JQuery的方法,我需要做一些相当先进的工作,但是我不认为别人以前做过什么。所以如果你能指出我会朝着正确的方向发展,那将是一件好事。高级自动完成输入

我有一个带有作者列表的文本框,我已经用数据库中的自动完成列表(Oracle使用EF4)填充了一个列表。非常好。但我需要建立在这个基础上。

enter image description here

基本上用户需要:

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

希望这有一定的道理,我不认为这是疯狂的复杂,​​只是我缺少知道去哪里看的过了一些代码提示:)

UPDATE

所以狩猎周围 - 我想我已经找到了一个很好的插件,可以做我想要的绝大多数 - 它被称为tokenInput。不知道如何格式化JSON,因为它需要特定的格式,也不确定是否指定新的作者。但只是给它一个镜头,现在....

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

回答

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到你的视图,我通常添加一个Parameter到我的ViewModel。然后你需要将该字符串分配给一个javascript变量:

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

嗨,我刚刚进入了更多的代码现在,我发现你不需要做任何额外的工作来获得正确的格式,或者至少它理解MVC框架的默认JSON输出。但是,谢谢。 – Vidar