我正试图在MVC3上获得一个agrip但是我在一个Viewmodel上失败了,它应该显示一个List但是经常遇到字典错误。
传递到字典中的模型项是类型的 “marc_bew_online.ViewModels.StellenlisteViewModel”,但此字典需要“System.Collections.Generic.IEnumerable`1 [marc_bew_online.ViewModels.StellenlisteViewModel]”类型的模型项。
这是我的存储库的代码:
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; }
}
Viewpage提取:
@foreach(var item in Model.StellenListe)
{
<tr>
<td>
@Html.Display(item.STELLENBESCHREIBUNG);
</td>
</tr>
}
Viewpage目前正在显示“;”对于LINQ表达式找到的每个项目
我无法找到解决方案,以便在我的视图中显示列表。
答案 0 :(得分:1)
问题很可能是您的观看代码。
确保您的模型声明为:
@model StellenlisteViewModel
而不是:
@model IEnumerable<StellenlisteViewModel>
修改强>
从它的声音中你可能会混淆一些事情。
您的页面将具有单一视图模型。在此视图模型上将显示您要显示的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,因此无法检查语法。
修改#2 强>
您错误地使用了Display
。您可以查看documentation。
这也是DisplayFor()
就是你要找的东西。
答案 1 :(得分:0)
您将返回单个项目而不是项目列表。您需要声明视图以获取marc_bew_online.ViewModels.StellenlisteViewModel
(而不是IEnumerable)或返回viewmodel项的列表。