Проблема при реализации моделей в архитектуре MVCC#

Место общения программистов C#
Ответить
Anonymous
 Проблема при реализации моделей в архитектуре MVC

Сообщение Anonymous »

Чтобы дать вам некоторый контекст.
Я пытался создать простое приложение 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»