Сейчас у меня есть эти две таблицы:
Код: Выделить всё
public class Persona
{
public int Id { get; set; }
public string Nombre { get; set; }
public string ApellidoPaterno { get; set; }
public string ApellidoMaterno { get; set; }
public string Email { get; set; }
public string Telefono { get; set; }
// Relationship
public int? UsuarioId { get; set; }
public Usuario? Usuario { get; set; }
}
public class Usuario
{
public int Id { get; set; }
public string Username { get; set; }
public string Password { get; set; }
// Relacion
public int? PersonaId { get; set; }
[ForeignKey("PersonaId")]
public Persona? Persona { get; set; }
}
Это модель представления, которую я создал:
Код: Выделить всё
public class PersonaUsuarioVista
{
// Persona properties
public string Nombre { get; set; }
public string ApellidoPaterno { get; set; }
public string ApellidoMaterno { get; set; }
public string Email { get; set; }
public string Telefono { get; set; }
// Usuario properties
public string Username { get; set; }
public string Password { get; set; }
}
Но когда Дело доходит до Edit. Я не знаю, почему он не работает.
Метод Get работает правильно, то есть отображает данные внутри полей ввода.
Но как только изменение внесено и сохранено... Ничего, я не знаю, почему это так.
Это метод Post для редактирования:
Код: Выделить всё
[HttpPost]
[ValidateAntiForgeryToken]
public async Task Edit(int id, UsuarioPersonaVista.PersonaUsuarioVista model)
{
if (ModelState.IsValid)
{
var personaToUpdate = await _context.Personas.FindAsync(id);
if (personaToUpdate == null)
{
return NotFound();
}
var usuarioToUpdate = await _context.Usuarios.FirstOrDefaultAsync(u => u.PersonaId == id);
if (usuarioToUpdate == null)
{
return NotFound();
}
// Update Persona properties
personaToUpdate.Nombre = model.Nombre;
personaToUpdate.ApellidoPaterno = model.ApellidoPaterno;
personaToUpdate.ApellidoMaterno = model.ApellidoMaterno;
personaToUpdate.Email = model.Email;
personaToUpdate.Telefono = model.Telefono;
// Update Usuario properties
usuarioToUpdate.Username = model.Username;
// Save changes
_context.Usuarios.Update(usuarioToUpdate);
_context.Personas.Update(personaToUpdate);
await _context.SaveChangesAsync();
return RedirectToAction(nameof(Index));
}
return View(model); // Return the view with the model if the ModelState is invalid
}
Код: Выделить всё
Nombre
Apellido Paterno
Apellido Materno
Email
Telefono
Username
Подробнее здесь: https://stackoverflow.com/questions/792 ... l-in-razor
Мобильная версия