В настоящее время я работаю над простой таблицей MVC со скаффолдом CRUD.
И у меня возникают проблемы при реализации связей.
Простые независимые таблицы работают нормально, это просто каркас модели и все.
Но когда я пытался реализовать связь следующим образом:
Код: Выделить всё
public class Activo
{
public int id { get; set; }
[Required]
[StringLength(100)]
public string Marca { get; set; }
[Required]
[StringLength(100)]
public string Modelo { get; set; }
[Required]
[StringLength(100)]
public string Tarjeta_Video { get; set; }
public int? ID_Usuario { get; set; }
public int? ID_Procesador { get; set; }
public int? ID_Memoria { get; set; }
public int? ID_DiscoDuro { get; set; }
// Navigation properties
[ForeignKey("ID_Usuario")]
public virtual Usuario Usuario { get; set; }
[ForeignKey("ID_Procesador")]
public virtual Procesador Procesador { get; set; }
[ForeignKey("ID_Memoria")]
public virtual Memoria Memoria { get; set; }
[ForeignKey("ID_DiscoDuro")]
public virtual DiscoDuro DiscoDuro { get; set; }
}
Код: Выделить всё
// GET: Activos/Create
public IActionResult Create()
{
ViewData["ID_DiscoDuro"] = new SelectList(_context.DiscoDuro, "id", "Marca");
ViewData["ID_Memoria"] = new SelectList(_context.Memoria, "id", "Marca");
ViewData["ID_Procesador"] = new SelectList(_context.Procesador, "id", "Marca");
ViewData["ID_Usuario"] = new SelectList(_context.Usuario, "id", "ApellidoMaterno");
return View();
}
// POST: Activos/Create
// To protect from overposting attacks, enable the specific properties you want to bind to.
// For more details, see http://go.microsoft.com/fwlink/?LinkId=317598.
[HttpPost]
[ValidateAntiForgeryToken]
public async Task Create([Bind("id,Marca,Modelo,Tarjeta_Video,ID_Usuario,ID_Procesador,ID_Memoria,ID_DiscoDuro")] Activo activo)
{
if (ModelState.IsValid)
{
_context.Add(activo);
await _context.SaveChangesAsync();
return RedirectToAction(nameof(Index));
}
ViewData["ID_DiscoDuro"] = new SelectList(_context.DiscoDuro, "id", "Modelo", activo.ID_DiscoDuro);
ViewData["ID_Memoria"] = new SelectList(_context.Memoria, "id", "Modelo", activo.ID_Memoria);
ViewData["ID_Procesador"] = new SelectList(_context.Procesador, "id", "Modelo", activo.ID_Procesador);
ViewData["ID_Usuario"] = new SelectList(_context.Usuario, "id", "ApellidoMaterno", activo.ID_Usuario);
return View(activo);
}
Код: Выделить всё
Когда я пытаюсь создать Activo, он позволяет мне открыть раскрывающийся список и просмотреть все доступные данные, находящиеся в таблицах Memoria, DiscoDuro и т. д.Но как только я нажимаю «Создать», появляется эта ошибка:
Код: Выделить всё
An unhandled exception occurred while processing the request.
NullReferenceException: Object reference not set to an instance of an object.
Microsoft.AspNetCore.Mvc.Rendering.MultiSelectList.GetListItemsWithValueField()
Это заставило меня поверить, что проблема в том, как я их использую. значения.
Я знаю, что, вероятно, он неправильно захватывает входное значение, но, поскольку я новичок в Razor Pages и MVC, я просто не могу на всю жизнь понять, что я делаю, и пока один, как это исправить. . Я просто чувствую себя потерянным.
Я буду очень признателен за любые рекомендации по исправлению, повторному решению этой проблемы или просто какой-либо способ сделать это проще, выполнимее или просто лучше.
Спасибо, что уделили время.
Подробнее здесь: https://stackoverflow.com/questions/791 ... folding-an