Представление индекса не показывает имя - PullRequest
0 голосов
/ 14 мая 2019

Я создаю две модели: Марка автомобиля и Марка автомобиля. В марке автомобиля я добавляю 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

Кто-нибудь знает, где я допустил ошибку?

МаркеВозила Модель

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; }

    }
}
...