я пытаюсь объединить две модели
Brand of car
и Model of car
using System.Collections;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace TriglavOsiguranje.Models
{
public class ModeliVozila
{
[Key]
public int Id { get; set; }
[Required]
[MaxLength(20)]
public string Ime { get; set; }
public virtual MarkeVozila MarkeVozila { get; set; }
}
}
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Threading.Tasks;
namespace TriglavOsiguranje.Models
{
public class MarkeVozila
{
[Key]
public int Id { get; set; }
[Required]
[MaxLength(30)]
public string Ime { get; set; }
public virtual ICollection<ModeliVozila> ModeliVozila { get; set; }
}
}
И в моем Create.cshtml я хочу показать выпадающий список, чтобы выбрать, какая модель автомобилей связана с брендом
Как в Volvo -> марка автомобиля
S60 -> модель автомобиля
Пока что я делал в своем контроллере, я пытаюсь передать идентификатор, используя
ViewBag.MarkeVozilaId = new SelectList(_db.MarkeVozila, "Id", "Name", modeliVozila.MarkeVozila);
И отображается в моем Create View, но я получаю, что Object не установлен на экземпляры объекта
Пока вот мой контроллер
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.Rendering;
using Microsoft.EntityFrameworkCore;
using TriglavOsiguranje.Data;
using TriglavOsiguranje.Models;
namespace TriglavOsiguranje.Areas.Admin.Controllers
{
[Area("Admin")]
public class ModeliVozilaController : Controller
{
private readonly ApplicationDbContext _db;
public ModeliVozilaController(ApplicationDbContext db)
{
_db = db;
}
public IActionResult Index()
{
return View(_db.Modeli.Include(m => m.MarkeVozila).ToList());
}
//GET Create Action Metod
public IActionResult Create()
{
ViewBag.MarkeVozilaId = new SelectList(_db.MarkeVozila, "Id", "Name");
return View();
}
//POST Create Action Metod
[HttpPost]
[ValidateAntiForgeryToken]
public async Task<IActionResult> Create(ModeliVozila modeli)
{
if (ModelState.IsValid)
{
_db.Add(modeli);
await _db.SaveChangesAsync();
return RedirectToAction(nameof(Index));
}
ViewBag.MarkeVozilaId = new SelectList(_db.MarkeVozila, "Id", "Name", modeli.MarkeVozila);
return View(modeli);
}
//GET Edit Action Metod
public async Task<IActionResult> Edit(int? id)
{
if (id == null)
{
return NotFound();
}
var modeliVozila = await _db.Modeli.FindAsync(id);
if (modeliVozila == null)
{
return NotFound();
}
ViewBag.MarkeVozilaId = new SelectList(_db.MarkeVozila, "Id", "Name");
return View(modeliVozila);
}
//POST Edit Action Metod
[HttpPost]
[ValidateAntiForgeryToken]
public async Task<IActionResult> Edit(int id, ModeliVozila modeliVozila)
{
if (id != modeliVozila.Id)
{
return NotFound();
}
if (ModelState.IsValid)
{
_db.Update(modeliVozila);
await _db.SaveChangesAsync();
return RedirectToAction(nameof(Index));
}
ViewBag.MarkeVozilaId = new SelectList(_db.MarkeVozila, "Id", "Name", modeliVozila.MarkeVozila);
return View(modeliVozila);
}
Кто-нибудь знает, как это сделать кратко, я не хочу, чтобы ничего сложного
В основном показывают только марку автомобиля