#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, который он генерирует, обратно в представление.