Я создаю две модели: Марка автомобиля и Марка автомобиля. В марке автомобиля я добавляю BrandID и соединяю эти две Model
, используя идентификатор.
public virtual MarkeVozila MarkaVozila { get; set; }
После этого я передаю ID
в контроллере в методе Create, Edit и Index Action, используя ViewBag
Controller
public IActionResult Index()
{
return View(_db.Modeli.Include(m =>m.MarkaVozila).ToList());
}
//GET Create Action Metod
public IActionResult Create()
{
ViewBag.MarkaVozilaId = new SelectList(_db.MarkeVozila, "Id", "Ime");
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.MarkaVozilaId = new SelectList(_db.MarkeVozila, "Id", "Ime", modeli.MarkaVozila.Id);
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.MarkaVozilaId = new SelectList(_db.MarkeVozila, "Id", "Ime");
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.MarkaVozilaId = new SelectList(_db.MarkeVozila, "Id", "Ime");
return View(modeliVozila);
}
Используя ViewBag.MarkaVozilaId
Aftrer, который я создаюв раскрывающемся списке View
, в котором отображается список всех марок: например, «Audi», «BMW», «VW»
<div class="form-group row">
<div class="col-2">
<label>Marka Vozila</label>
</div>
<div class="col-5">
<select asp-for="MarkaVozila" asp-items="ViewBag.MarkaVozilaId" class="form-control">
<option>Marka Vozila</option>
</select>
</div>
</div>
. И в моем индексном представлении я добавляю одно поле таблицы для отображения марки автомобиля, но послеЯ назначаю марку автомобиля для модели. Индекс не показывает Марку автомобиля.
@model IEnumerable<Project.Models.ModeliVozila>
@{
ViewData["Title"] = "Index";
}
<br /><br />
<div class="row">
<div class="col-6">
<h2 class="text-info">Modeli Vozila</h2>
</div>
</div>
<br />
<div>
<table class="table table-striped border datatable-modeliVozila">
<thead>
<tr class="bg-info">
<th>Modela vozila</th>
<th>Marke vozila</th>
<th></th>
<th></th>
</tr>
</thead>
<tbody>
@foreach (var item in Model)
{
<tr>
<td>
@Html.DisplayFor(m => item.Ime)
</td>
<td>
@Html.DisplayFor(m => item.MarkaVozila.Ime)
</td>
<td>
<partial name="_TableButtonPartial" model="item.Id" />
</td>
</tr>
}
</tbody>
</table>
</div>
![Picture 1](https://i.stack.imgur.com/j2sgo.png)
Кто-нибудь знает, где я допустил ошибку?
МаркеВозила Модель
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; }
}
}
**ModeliVozila Model**
using System.ComponentModel.DataAnnotations;
namespace TriglavOsiguranje.Models
{
public class ModeliVozila
{
[Key]
public int Id { get; set; }
[Required]
[MaxLength(20)]
public string Ime { get; set; }
public virtual MarkeVozila MarkaVozila { get; set; }
}
}