如何在没有使用jQuery的MultiSelectBox的情况下在ASP MVC中实现EF多对多的关系?

我正在使用Entity Framework 6.1和ASP.NET MVC5构建应用程序。 我有以下型号:

class Person { public Int32 Id {get; set;} [Required] public String Name {get; set;} public List Books {get; set;} } class Book { public Int32 Id {get; set;} [Required] public String Title {get; set;} public List Authors {get; set;} } 

为了编辑一本书,我得到了这个视图模型:

 class BookViewModel { public String Title {get; set;} public List AuthorIds {get; set;} public List Authors {get; set;} } class PersonViewModel { public Int32 Id {get; set;} public String Name {get; set;} } 

并且观点:

 

Book @Model.Title

@Html.DisplayFor(m => m.Authors)

我进一步得到了一个jQuery对话框,用户可以在其中搜索并从一大堆人员中选择一个Person 。 使用“添加作者”按钮显示此对话框。 关闭对话框后,我将获得用户选择的PersonIdXmlHttpRequest返回Person的可见标记,因此我可以将其添加到DOM。

显示的每个作者也都有一个“删除”按钮。

现在我想象有一个隐藏字段列表,用于在我的POST数据中获取所选作者:

 AuthorIds[0]=17 AuthorIds[1]=44 AuthorIds[2]=90234 

当我以这种方式获取我的POST数据时,我可以自动绑定我的模型并将其映射得非常舒服。 然而,客户方有一些未解决的问题:

  • 我的真实图形路径更复杂(如Thing[3].Subthing[1].Book[0].AuthorIds[2] )。 当没有(最初为空的集合)我可以从中复制路径时,如何添加条目?
  • 当我删除不是从最后的项目时,我如何填补索引中的空白?

我在这里走错了路吗? 在处理这种关联时,我应该采用不同的方法吗?