Ошибка: элемент модели, переданный в словарь, имеет тип '.... Список', но для этого словаря требуется модель типа '... IEnumerable` - PullRequest
0 голосов
/ 02 июня 2011

Я столкнулся с этой ошибкой при попытке отрисовки приложения asp.net MVC 3.0.Я работаю с DAB Architecture (3 проекта) CAFM.Web, CAFM.Business и CAFM.Data проектов.

CAFM.Data включает в себя

CAFMEntities: Entity FrameWork ITabMaster: Пространство имен интерфейса CAFM.Data.Interfaces {открытый интерфейс ITabMaster {TabMaster GetTabMasterById (Int64 id);IEnumerable FindTabMasterByName (имя строки);void AddTabMaster (TabMaster tabmaster);IEnumerable GetAllTabMaster ();}}

CAFM.Business включает ссылку на пространство имен CAFM.Data CAFM.Business.Repositories {открытый класс TabMasterRepository: ITabMaster {public int colID {get;задавать;} публичная строка FirstName {get;задавать;} публичная строка LastName {get;задавать;}

    private CAFMEntities _context;

    public TabMasterRepository()
    {
        //IUnitOfWork unitOfWork = new CAFMEntities();
        _context = new CAFMEntities();
    }

    public TabMasterRepository(IUnitOfWork unitOfWork)
    {
        if (unitOfWork == null)
            throw new ArgumentNullException("unitOfWork");

        _context = unitOfWork as CAFMEntities;
    }

    public IEnumerable<TabMaster> GetAllTabMaster()
    {
        //(extension)List<Movie> IEnumerable<Movie>.ToList<Movie>()
        //List<TabMaster> tabmasters = _context.TabMasters.ToList();
        return _context.TabMasters.ToList() ;// .AsEnumerable<TabMaster>();//.ToList();
        //return tabmasters;
    }

    public TabMaster GetTabMasterById(Int64 id)
    {
        return _context.TabMasters.Where(c => c.colID == id).Single();
    }

    public IEnumerable<TabMaster> FindTabMasterByName(string name)
    {
        return _context.TabMasters.Where(c => c.LastName.StartsWith(name)).AsEnumerable<TabMaster>(); //.ToList();
    }

    public void AddTabMaster(TabMaster tabmaster)
    {
        _context.TabMasters.AddObject(tabmaster);
    }
}

}

CAFM.Web содержит ссылку на пространство имен CAFM.Data CAFM.Web.Controllers {открытый класс TabMasterController: Controller {// // GET: / TabMaster /

    public ViewResult Index()
    {

        //Error comes in following line. (_context.TabMasters.ToList() is successfully return all the values but error is The model item passed into the dictionary is ... during rendering HTML 
        TabMasterRepository tr = new TabMasterRepository();
        return View(tr.GetAllTabMaster());
    }

}

}

Index.cshtml содержит

@ model IEnumerable @ {Layout = null;} TabMaster

Список фильмов

@ Html.ActionLink («Создать новый», «Создать»)

ID Имя Фамилия @foreach (элемент var в модели) {@ Html.DisplayFor (modelItem => item.colID) @ Html.DisplayFor (modelItem => item.FirstName) @ Html.DisplayFor (modelItem => item.LastName)}

Описание ошибки: Элемент моделипередан в словарь типа «System.Collections.Generic.List 1[CAFM.Data.TabMaster]', but this dictionary requires a model item of type 'System.Collections.Generic.IEnumerable 1 [CAFM.Business.Repositories.TabMasterRepository]».

Пожалуйста, укажите ваше ценное предложение для устранения вышеуказанной ошибки.

Ваш ответ приветствуется!Спасибо, Имдадхусен

1 Ответ

0 голосов
/ 02 июня 2011

Я не понимаю, зачем вам ваш репозиторий в представлении.Вы пытались изменить модель на

@model List<CAFM.Data.TabMaster> 

В MVC вы должны передавать данные между контроллером и просматривать через ViewModels

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...