我有一个复杂的问题。我需要在ASP.NET MVC4应用程序中的一个表单中添加多个项目。我有三种模式:
电影:
public class Movie
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
public string Title { get; set; }
public string Description { get; set; }
public int Duration { get; set; }
}
电影中的所有语言:
public class MovieLanguages
{
[ForeignKey("Movie")]
public int MovieId { get; set; }
[ForeignKey("Language")]
public int LanguageId { get; set; }
public virtual Movie Movie { get; set; }
public virtual Language Language { get; set; }
}
语言:
public class Language
{
public int Id { get; set; }
public string Name { get; set; }
}
我理解如何保存用户的输入,如果它只是在一个表单中使用这样的简单行的Movie模型:
@Html.EditorFor(model => model.Movie.Name)
问题是用户还应该能够为表单内的电影添加多种语言(模型MovieLanguages)。因此,当显示表单时,用户将具有以下内容:
用户将有一个语言下拉列表,当他从列表中选择一种语言并单击“添加语言”按钮时,语言将显示在下方。单击“保存电影”时,所有选定的语言也应保存到表MovieLanguages中的数据库中。如果Movie ID只有在存储在数据库中之后才能知道,如何处理这个问题?当存在这种一对多的关系时,我不确定如何解决View和Controller中多个模型的问题。有任何想法吗? :)
谢谢。
答案 0 :(得分:0)
您所需要的只是Model Binding To A List和Model Binding to Arrays, Lists, Collections, Dictionaries。其余的是一点点javascript,可以在Add Language
点击动态生成所需的html。