Я пытался создать простое приложение MVC с использованием Razor страниц.
Теперь я понял идею ViewModel и то, как они работают. используются для отображения данных на странице Razor.
Дело в том... Теперь я хочу использовать страницу Razor для создания значений, связанных между собой.
Позвольте мне копнуть глубже это.
Сейчас у меня 2 класса.
Персоны (люди) и Хиджос (дети), их идея проста.
У людей может быть много детей, но дети — это дети только одного родителя, в этом образе.
Я создал отображение и еще одну страницу, на которой отображаются сыновья этого человека, вот и все. сказано и сделано.
Проблема в том, что я пытаюсь создать дочерний элемент и подключить его к родительскому.
Это соответствующие классы:
Код: Выделить всё
public class Persona
{
public int Id { get; set; }
public string Nombre { get; set; } = null!;
public string Apellido { get; set; } = null!;
public string Email { get; set; } = null!;
public string Telefono { get; set; } = null!;
//Hijo
public List? Hijos { get; set; }
}
public class Hijo
{
public int Id { get; set; }
public string Nombre { get; set; }
public DateOnly FechaNacimiento { get; set; } = DateOnly.FromDateTime(DateTime.Now);
//Navigation Properties
public int PersonaId { get; set; }
public Persona Persona { get; set; } = null!;
}
Код: Выделить всё
public class CrearHijoViewModel
{
public string Nombre { get; set; }
public DateOnly FechaNacimiento { get; set; }
public List
Padres { get; set; }
}
Это контроллер:
Код: Выделить всё
[HttpPost]
public async Task Create(Hijo hijo)
{
Console.WriteLine(hijo);
if (ModelState.IsValid)
{
_context.Add(hijo);
await _context.SaveChangesAsync();
return RedirectToAction(nameof(Index));
}
var padres = await _context.Personas.ToListAsync();
var newCrearHijoModel = new CrearHijoViewModel
{
Nombre = hijo.Nombre,
FechaNacimiento = hijo.FechaNacimiento,
Padres = padres
};
return View(newCrearHijoModel);
}
Код: Выделить всё
Nombre
Fecha de Nacimiento
@foreach (var padre in Model.Padres)
{
@padre.Nombre @padre.Apellido
}
Проблема возникает, когда я пытаюсь отправить свои данные. Его отвергают. Я не уверен, что это потому, что я получаю модель Hijo, тогда как страница бритвы имеет CrearHijoViewModel.
Я понимаю, что это может быть проблемой, но если это так... Как мне это сделать? исправить?
Должен ли я создать новый объект Hijo и ввести его в контекст? Это моя модель представления или моя страница Razor неправильная?
Любая помощь или рекомендации очень ценятся!
Подробнее здесь: https://stackoverflow.com/questions/792 ... chitecture
Мобильная версия