Как я могу прочитать список из контроллера в foreach представление в Mvc? - PullRequest
0 голосов
/ 18 октября 2018

Я получил эту ошибку

Элемент модели, переданный в словарь, имеет тип 'System.Collections.Generic.List'1 [CandidateScreening.Data.Entities.Patient]', но этот словарьтребуется элемент модели типа 'System.Collections.Generic.IEnumerable'1 [CandidateScreening.Models.Patient]'.)

public ActionResult Index()
{
    var Patient = _context.Patients.ToList();
    return View(Patient);
}


@model IEnumerable<CandidateScreening.Models.Patient>
@{
    ViewBag.Title = "index";
}
<h2>List Of the Patient</h2>
<table class="table">
    <thead>
        <tr>
            <th>firstName</th>
            <th>SurName</th>
            <th>Gender</th>
        </tr>
    </thead>
    <tbody>
        @foreach (var item in Model)
        {
            <tr>
                <td> @Html.ActionLink(item.Firstname, "Index", "detail")</td>
                <td> @Html.ActionLink(item.Surname, "Index", "detail")</td>
                <td> @Html.ActionLink(item.Gender, "Index", "detail")</td>


            </tr>
        }
    </tbody>
</table>

Не могли бы вы сказать мне, почему я получаю эту ошибку?Я пытался изменить IEnumerable на List, но не работает

1 Ответ

0 голосов
/ 19 октября 2018

Предполагается, Patients является контекстом данных Entity Framework, ToList() создаст список с типом объекта, установленным как IEnumerable<CandidateScreening.Data.Entities.Patient>, который не совпадает с типом объекта, установленным директивой @model (то есть IEnumerable<CandidateScreening.Models.Patient>).

Чтобы решить эту проблему, просто используйте Select() LINQ-запрос для проецирования контекста сущности в список класса viewmodel:

public ActionResult Index()
{
    var Patient = _context.Patients.Select(x => new CandidateScreening.Models.Patient
    {
        // list of properties here
        // example:
        // PatientId = x.PatientId
    }).ToList();    

    return View(Patient);
}

Или используйте выражение запроса в качестве альтернативы:

var Patient = (from patient in _context.Patients
              select new CandidateScreening.Models.Patient
              {
                  // list of properties here
                  // example:
                  // PatientId = patient.PatientId
              }).ToList();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...