如何在没有使用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
。 使用“添加作者”按钮显示此对话框。 关闭对话框后,我将获得用户选择的Person
的Id
。 XmlHttpRequest
返回Person
的可见标记,因此我可以将其添加到DOM。
显示的每个作者也都有一个“删除”按钮。
现在我想象有一个隐藏字段列表,用于在我的POST数据中获取所选作者:
AuthorIds[0]=17 AuthorIds[1]=44 AuthorIds[2]=90234
当我以这种方式获取我的POST数据时,我可以自动绑定我的模型并将其映射得非常舒服。 然而,客户方有一些未解决的问题:
- 我的真实图形路径更复杂(如
Thing[3].Subthing[1].Book[0].AuthorIds[2]
)。 当没有(最初为空的集合)我可以从中复制路径时,如何添加条目? - 当我删除不是从最后的项目时,我如何填补索引中的空白?
我在这里走错了路吗? 在处理这种关联时,我应该采用不同的方法吗?
- asp DropDownListChosen未在下拉列表中显示任何项目
- JQuery UI Dialog&Asp(Web表单)调用事件处理程序
- 使用Jquery查找正确的ListView ClientID,其中页面上有多个列表视图
- Jquery自动完成不能在ASP.NET MVC 5上运行
- 使用checkboxlist中的jquery附加文本
- asp.net将JS / jquery中的值传递给c#后面的代码
- UpdatePanel和document.ready()Sys.Application.add_load没有添加处理程序
- 如何在页面加载之前运行JavaScript代码?
- ASP.NET MVC Bootstrap动态模态内容