Не могу отобразить Viewmodel из EF - PullRequest
1 голос
/ 05 марта 2012

Я пытаюсь получить agrip на MVC3, но мне не удается на Viewmodel, которая должна отображать список, но постоянно сталкивается с ошибкой словаря.

Элемент модели передан в словарьимеет тип "marc_bew_online.ViewModels.StellenlisteViewModel", но для этого словаря требуется элемент модели типа "System.Collections.Generic.IEnumerable`1 [marc_bew_online.ViewModels.StellenlisteViewModel]".

1006 * 100код моего хранилища:

public class Stellenbeschr_Repo : IStellenBeschrRepository
{
    marc_bew_entities db = new marc_bew_entities();

    public IEnumerable<STELLENBESCHREIBUNGEN> ListAktuell()
    {

        DateTime dt1 = new DateTime(2011, 1, 1);
        var stelleBeschreibungAbDatum = (from stellebeschreibung in db.STELLENBESCHREIBUNGEN
                                         where DateTime.Compare((DateTime)stellebeschreibung.VON_DATUM, dt1) >= 0
                                         select stellebeschreibung).ToList();

        return stelleBeschreibungAbDatum;
    }

}

Controller + ViewModel:

 private IStellenBeschrRepository _repository;

    public Default1Controller()
        : this(new Stellenbeschr_Repo())
    { 

    }

    public Default1Controller(IStellenBeschrRepository repository)
    {
        _repository = repository;
    }
    #endregion

    public ActionResult Index()
    {
        return View(_repository.ListAktuell());
    }

    public ActionResult Stellenliste()
    {
        var viewModels = new StellenlisteViewModel { StellenListe = _repository.ListAktuell() };
        return View(viewModels);
    }
     public class StellenlisteViewModel
{
    public IEnumerable<STELLENBESCHREIBUNGEN> StellenListe { get; set; }

}

Извлечение страницы просмотра:

 @foreach(var item in Model.StellenListe)
{
    <tr>
    <td>
        @Html.Display(item.STELLENBESCHREIBUNG);
    </td>
    </tr>
}

На странице просмотра в настоящее время отображается ";"для каждого элемента, найденного выражением LINQ

Я просто не могу найти решение для отображения списка в моем представлении.

Ответы [ 2 ]

1 голос
/ 05 марта 2012

Скорее всего, проблема в вашем коде просмотра.

Убедитесь, что ваша модель объявлена ​​как:

@model StellenlisteViewModel

а не:

@model IEnumerable<StellenlisteViewModel>

EDIT

Судя по его звукам, вы можете запутать несколько вещей.

Ваша страница будет иметь одну модель просмотра. В этом представлении модель будет иметь список STELLENBESCHREIBUNGEN, который вы хотите отобразить.

Для этого сначала убедитесь, что ваша страница просмотра принимает одну модель просмотра:

@model StellenlisteViewModel

Во-вторых, вы хотите добавить ToList() вызов в свой репозиторий:

    var stelleBeschreibungAbDatum = (from stellebeschreibung in db.STELLENBESCHREIBUNGEN
                                     where DateTime.Compare((DateTime)stellebeschreibung.VON_DATUM, dt1) >= 0
                                     select stellebeschreibung).ToList();

В-третьих, ваша страница просмотра будет выглядеть примерно так:

@model StellenlisteViewModel


foreach(var item in Model.StellenListe)
{
    // output each individual item to the page
    // here you can access the individual properties on your STELLENBESCHREIBUNGEN, e.g.:
    <span>@item.Description</span>
}

Извините, у меня нет доступа к MVC3 в настоящее время, поэтому я не могу проверить синтаксис.

EDIT # 2

Вы используете Display неправильно. Вы можете проверить документацию для этого.

Это также похоже на DisplayFor() - это то, что вы ищете.

0 голосов
/ 05 марта 2012

Вы возвращаете один товар, а не список товаров. Вам нужно либо объявить, что представление принимает marc_bew_online.ViewModels.StellenlisteViewModel (вместо IEnumerable), либо вернуть список элементов модели представления.

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