首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >无法从EF显示视图模型

无法从EF显示视图模型
EN

Stack Overflow用户
提问于 2012-03-05 11:14:19
回答 2查看 112关注 0票数 1

我试图在MVC3上得到一个agrip,但是在一个视图模型上失败了,这个视图模型应该显示一个列表,但是经常会遇到字典错误。

传递到字典中的模型项为"marc_bew_online.ViewModels.StellenlisteViewModel",类型,但此字典需要一个类型为"System.Collections.Generic.IEnumerable`1marc_bew_online.ViewModels.StellenlisteViewModel".的模型项。

下面是我的存储库的代码:

代码语言:javascript
复制
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;
    }

}

控制器+ ViewModel:

代码语言:javascript
复制
 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; }

}

视图页摘录:

代码语言:javascript
复制
 @foreach(var item in Model.StellenListe)
{
    <tr>
    <td>
        @Html.Display(item.STELLENBESCHREIBUNG);
    </td>
    </tr>
}

对于LINQ表达式找到的每一项,视图页当前都显示";“

我只是找不到一个解决方案来使列表在我的视图中显示。

EN

Stack Overflow用户

回答已采纳

发布于 2012-03-05 11:20:06

问题很可能是视图代码。

确保您的模型声明为:

代码语言:javascript
复制
@model StellenlisteViewModel

而不是:

代码语言:javascript
复制
@model IEnumerable<StellenlisteViewModel>

编辑

从它的声音,你可能是混淆了一些事情。

您的页面将有一个单一的视图模型。在此视图中,模型将是您想要显示的STELLENBESCHREIBUNGEN列表。

要做到这一点,首先要确保视图页接受单个视图模型:

代码语言:javascript
复制
@model StellenlisteViewModel

其次,您希望在存储库中添加一个ToList()调用:

代码语言:javascript
复制
    var stelleBeschreibungAbDatum = (from stellebeschreibung in db.STELLENBESCHREIBUNGEN
                                     where DateTime.Compare((DateTime)stellebeschreibung.VON_DATUM, dt1) >= 0
                                     select stellebeschreibung).ToList();

第三,视图页面将如下所示:

代码语言:javascript
复制
@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()一样。

票数 1
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9565668

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档