Как использовать класс (со списком классов) в качестве базы данных с действиями по созданию / индексации с использованием MVC5

#c# #asp.net-mvc #model-view-controller #asp.net-mvc-5

#c# #asp.net-mvc #модель-представление-контроллер #asp.net-mvc-5

Вопрос:

В настоящее время я работаю над проектом MVC5 с базами данных, и я застрял. Я много чего перепробовал, но ничего из этого не сработало так, как я хочу. У меня есть класс (поля которого представляют собой два списка двух других классов), который я хочу использовать для распознавания текущего UserName (прокрутите вниз, чтобы увидеть класс), а затем используйте конкретные списки IconModel и WindowModel .

Что мне нужно: у меня есть два класса:

 public class WindowModel
{
    [Key]
    public int Id { get; set; }
    public string Picture { get; set; }
    public string Title { get; set; }
    public string Content { get; set; }

    public WindowModel() { }

    public WindowModel(string picture, string title, string content)
    {
        Picture = picture;
        Title = title;
        Content = content;
    }
}
  

и

 public class IconModel
{
    [Key]
    public int Id { get; set; }
    public int Left { get; set; }
    public int Top { get; set; }
    public string Picture { get; set; }
    public string Text { get; set; }

    public IconModel() { }

    public IconModel(int left, int top, string picture, string text)
    {
        Left = left;
        Top = top;
        Picture = picture;
        Text = text;
    }
}
  

И, наконец, класс, который объединяет две (для подключения / использования) базы данных:

 public class DataModel
{
    [Key]
    public int Id { get; set; }
    public string UserName { get; set; }
    public List<WindowModel> Windows { get; set; }
    public List<IconModel> Icons { get; set; }

    public DataModel() { }

    public DataModel(string userName, List<WindowModel> windows, List<IconModel> icons)
    {
        UserName = userName;
        Windows = windows;
        Icons = icons;
    }
}

public class DataDbContext : DbContext
{
    public DbSet<DataModel> Data { get; set; }
}
  

У меня есть контроллер с Entity Framework с действиями Create / Index / Edit / etc.
Теперь моя проблема в том, что в индексном действии я могу использовать foreachs и получать доступ ко всем данным из List<WindowModel> and List<IconModel> . Но как я могу использовать их в действии создания?
Я не могу использовать @Html.EditorFor(x => x.Windows.Picture) , потому что это List<> (конечно). Как я могу теперь иметь EditorFors для каждого свойства (Windows.Изображение, Windows.Заголовок и т. Д.) WindowModel / IconeModel?

Я также пробовал создать две базы данных ( DbSet<WindowModel> Windows amd DbSet<IconModel> ), но это не сработало должным образом.

Ответ №1:

Используйте цикл for, данные автоматически сериализуются.

 @for(int i = 0; i< x.Windows.Count(); i  )
{
   @Html.EditorFor(x => x.Windows[i].Picture)
}
  

Комментарии:

1. Не могли бы вы привести более конкретный пример, пожалуйста, потому что я не хочу перебирать все окна [i]. Изображение (ы), мне просто нужен один редактор..

2. Я думаю, вы можете отправить список с одним пустым элементом в представление. или просто сделайте это один раз и скопируйте html, который он генерирует, обратно в представление.