Я пытался создать простое приложение ASP.NET MVC с использованием Razor страниц.
Теперь я поняли идею модели представления и то, как они используются для отображения данных на странице Razor.
Дело в том... Теперь я хочу использовать страницу Razor для создания значений, которые связаны между собой.
Пусть мне копнуть глубже. Сейчас у меня есть 2 класса: Personas (люди) и Hijos (дети). Идея проста.
У людей может быть много детей, но дети — это дети только одного родителя, в этом образе.
Я создал дисплей и еще одна страница, на которой отображаются сыновья этого человека, где все сказано и сделано.
Проблема заключается в том, что я пытаюсь создать дочерний элемент и подключить его к родителю.
Это соответствующие классы:
Код: Выделить всё
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, тогда как страница Razor имеет дело с CrearHijoViewModel.
Я понимаю, что это может быть проблемой, но если это.... Как это исправить?
Должен ли я создать новый объект Hijo и ввести его в контекст? Это моя модель представления или моя страница Razor неправильная?
Любая помощь или рекомендации очень ценятся!
Подробнее здесь: https://stackoverflow.com/questions/792 ... chitecture