2013-04-01 4 views
0

У меня есть одна сложная проблема. Мне нужно добавить несколько элементов внутри одной формы в приложении 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; } 
} 

Я понимаю, как сохранить ввод пользователя, если это только для модели фильма с простыми линиями, подобными этому, в форме:

@Html.EditorFor(model => model.Movie.Name) 

Проблема заключается в том, что пользователь должен также иметь возможность добавлять несколько языков для фильма внутри формы (модель MovieLanguages). Таким образом, при отображении формы пользователь будет иметь что-то вроде этого:

enter image description here

Пользователь будет иметь раскрывающийся список языков и, когда он выбирает язык из списка и нажимает кнопку Добавить язык, язык будет отображаться ниже , Когда он нажимает кнопку Сохранить фильм, все выбранные языки также должны быть сохранены в базе данных в таблице MovieLanguages. Как справиться с этой проблемой, когда идентификатор фильма будет известен только после его сохранения в базе данных? Я не уверен, как решить проблему с несколькими моделями в представлении и контроллере, когда есть это отношение ко многим. Есть идеи? :)

Спасибо.

ответ

0

Все, что вам нужно, это Model Binding To A List и Model Binding to Arrays, Lists, Collections, Dictionaries. Остальное - это крошечный бит javascript для динамического создания требуемого html на Add Language клике.

+0

Спасибо, но я до сих пор не совсем понимаю, что мне нужно делать. На этой первой ссылке есть только список с предопределенным количеством значений, отображаемых для редактирования. Я был бы признателен, если бы вы могли объяснить это немного. Я не понимаю, как я мог использовать это, чтобы сохранять языковые временные, а затем сохранять их в базу данных при сохранении фильма. – Cristiano

+0

Вам не нужно временно сохранять языки на сервере - вы сохраняете их на входах в клиентском html. – archil

Смежные вопросы