MVC 3 Подробный просмотр - PullRequest
       3

MVC 3 Подробный просмотр

0 голосов
/ 21 ноября 2011

Я новичок в работе с кадрами MVC. И я делаю одну страницу, где мы можем увидеть подробную информацию об отделе, нажав на ссылку ссылку детали.

Когда пользователь нажимает кнопку ссылки, он извлекает все записи определенного отдела в Списке коллекций и перенаправляет их на Просмотр подробностей. Данные извлекаются в Списке, но при переходе на Просмотр подробностей выдает следующую ошибку:

Элемент модели, передаваемый в словарь, имеет тип 'System.Collections.Generic.List 1 [DocPageSys.Models.Interfaces.DepartmentInfo] ', but this dictionary requires a model item of type ' DocPageSys.Models.Interfaces.DepartmentInfo`'.

Я понял ошибку, но путаница, чтобы решить ее. И застрял с этой проблемой ...

Ответы [ 3 ]

3 голосов
/ 21 ноября 2011

Поскольку ваше представление Details строго типизировано как DepartmentInfo:

@model DocPageSys.Models.Interfaces.DepartmentInfo

, вам нужно передать один его экземпляр из действия контроллера вместо списка:

public ActionResult Details(int id)
{
    DepartmentInfo depInfo = db.Departments.FirstOrDefault(x => x.Id == id);
    return View(depInfo);
}

Поэтому убедитесь, что при вызове метода return View() из действия вашего контроллера вы передаете один экземпляр DepartmentInfo, который вы извлекли из хранилища данных.

Чтобы изначально он работал нормальноВы можете просто жестко закодировать какое-нибудь значение в нем:

public ActionResult Details(int id)
{
    var depInfo = new DepartmentInfo
    {
        Id = 1,
        Name = "Sales",
        Manager = "John Smith"
    }
    return View(depInfo);
}

О, и вы заметите, что я не использовал ViewData / ViewBag.Тебе это не нужно.Из-за их слабо типизированного характера это делает вещи действительно ужасными.Я бы порекомендовал вам всегда использовать модели просмотра.

0 голосов
/ 21 ноября 2011

Эта ошибка обычно возникает, когда существует несоответствие между данными, которые действие контроллера передает представлению, и типом данных, ожидаемых представлением.

В этом случае это выглядит так, как будто выпередача списка элементов DepartmentInfo, когда ваше представление ожидает один элемент.

0 голосов
/ 21 ноября 2011

Передача списка вместо одного элемента

Эта ошибка говорит о том, что вы передаете список в ваше представление, но должны передавать один экземпляр объекта сущности.получил один элемент, но в списке вы можете легко сделать:

return View(result[0]);

или более надежный код:

if (result != null && result.Count == 1)
{
    return View(result[0]);
}
return RedirectToAction("Error", "Home");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...