Как исправить элемент, переданный в словарь, типа «Модели», но для словаря требуется модель типа «System.Collections.Generi c .IEnumerable». - PullRequest
0 голосов
/ 09 апреля 2020

Я пытаюсь отобразить частичную страницу, которая включает таблицу в одном из моих представлений, в котором у меня есть выпадающий список для. Я продолжаю получать ту же ошибку, и я не уверен, как ее исправить. В конце концов я хотел бы отобразить значения для таблиц на основе выбора этих 3 выпадающих. Любая помощь будет оценена.

Это мой взгляд

    @model IgnitionHub2._0.Models.Car
@{
    ViewBag.Title = "Car Search Page";
}

<h2>Cars</h2>
<div class="center-div">
    <div class="form-inline">
        @Html.DropDownListFor(model => model.CarID, new SelectList(Model.CarList, "CarID", "Model.Name"), "Select Car", new { @class = "form-control" })
        @Html.DropDownListFor(model => model.Model.MakeID, new SelectList(Model.MakeList, "MakeID", "Name"), "Select Make", new { @class = "form-control" })
        @Html.DropDownListFor(model => model.ModelID, new SelectList(Model.ModelList, "ModelID", "Name"), "Select Model", new { @class = "form-control" })
        <button type="submit" id="submit">Submit Search</button>
    </div>
</div>
@{ Html.RenderPartial("_Index");}

Это мой частичный взгляд

@model IEnumerable<IgnitionHub2._0.Models.Car>

<table class="table">
    <tr>
        <th>
            @Html.DisplayNameFor(model => model.Year)
        </th>
        <th>
            @Html.DisplayNameFor(model => model.Color)
        </th>
        <th>
            @Html.DisplayNameFor(model => model.Model.Name)
        </th>
        <th>
            @Html.DisplayNameFor(model => model.CarLot.LotName)
        </th>
        <th></th>
    </tr>

@foreach (var item in Model) {
    <tr>
        <td>
            @Html.DisplayFor(modelItem => item.Year)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.Color)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.Model.Name)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.CarLot.LotName)
        </td>
        <td>
            @Html.ActionLink("Edit", "Edit", new { id=item.CarID }) |
            @Html.ActionLink("Details", "Details", new { id=item.CarID }) |
            @Html.ActionLink("Delete", "Delete", new { id=item.CarID })
        </td>
    </tr>
}

</table>

Это мой контроллер

public ActionResult Index()
{

    var cars = db.Cars.Include(c => c.Model).Include(c => c.CarLot);
    var makeList = db.Makes.ToList();
    var modelList = db.Models.ToList();
    var ViewModel = new Car
    {
    CarList = cars,
    MakeList = makeList,
    ModelList= modelList
    };

    return View(ViewModel);
}

public ActionResult _Index()
{
    var cars = new List<Car>(); 
    return PartialView(cars);
}

Пожалуйста, помогите! Спасибо!

1 Ответ

2 голосов
/ 09 апреля 2020

Вам необходимо передать объект типа, для которого строго типизировано частичное представление _Index , которому IEnumerable<IgnitionHub2._0.Models.Car>

Вы не передаете объект модели, поэтому основной вид является добрым неявной передачи объекта основного вида, с которым он является связующим.

Вам необходимо передать свойство Cars основной модели в частичное представление:

@{ Html.RenderPartial("_Index",Model.CarList);}
...