[英]Two models in one view
我有两个模型-Ksiazka.cs和Ludzie.cs,我有一个View Wypozyczone.cshtml,其中介绍了Ludzie.cs。
Ksiazka.cs
public int Id { get; set; }
public string Nazwa { get; set; }
public string Autor { get; set; }
public int Ilosc { get; set; }
Ludzie.cs
public int Id { get; set; }
public int IdKsiazki { get; set; }
public string Imie { get; set; }
public string Nazwisko { get; set; }
public DateTime DataWyporzyczenia { get; set; }
public DateTime DataOddania { get; set; }
Ksiazka.id = Ludzie.IdKsiazki
我需要让纳兹瓦回答IdKsiazki。
控制者
public ActionResult Wypozyczone()
{
var model = _mojaBaza.Ludzie.ToList();
return View(model);
我的观点
<th>
@Html.DisplayNameFor(model => model.IdKsiazki) //I want there Nazwa
</th>
<th>
@Html.DisplayNameFor(model => model.Imie)
</th>
<th>
@Html.DisplayNameFor(model => model.Nazwisko)
</th>
<th>
@Html.DisplayNameFor(model => model.DataWyporzyczenia)
</th>
<th>
@Html.DisplayNameFor(model => model.DataOddania)
</th>
创建另一个表示您想要的数据的类(某种视图模型)
public class LudzieKsiazka
{
public Ludzie Ludzie { get; set; }
public Ksiazka Ksiazka { get; set; }
}
在控制器中创建此“ viewmodel”
public ActionResult Wypozyczone()
{
var model = _mojaBaza.Ludzie.FirstOrDefault();
var ksiazka = _mojaBaza.Ksiazka.FirstOrDefault(kz => kz.Id = model.IdKsiazki);
var viewmodel = new LudzieKsiazka { Ludzie = model, Ksiazka = kziazka };
return View(viewmodel);
}
然后在视图中使用此“ viewmodel”
<th>
@Html.DisplayNameFor(model => model.Ksiazka.Nazwa)
</th>
如果要在视图上使用多个模型,请使用Tuple :
所以你的观点应该是这样的
@model Tuple<Ksiazka,Ludzie>
<th>
@Html.DisplayNameFor(tuple => tuple.Item1.Nazwa ) //I want there Nazwa
</th>
<th>
@Html.DisplayNameFor(tuple => tuple.Item2.Imie)
</th>
<th>
@Html.DisplayNameFor(tuple => tuple.Item2.Nazwisko)
</th>
<th>
@Html.DisplayNameFor(tuple => tuple.Item2.DataWyporzyczenia)
</th>
<th>
@Html.DisplayNameFor(tuple => tuple.Item2.DataOddania)
</th>
即使在您的问题中,您指出了两个模型,也不需要两个模型。 您的问题是您当前的实体模型没有该关系的一对一导航属性。
只听您的代码,因为它告诉您它需要什么:您的视图要求从另一个类获取更多信息,因此您的视图需要一个模型,该模型具有来自您所拥有的两个模型的信息。 在您的Ludzie
类中,您需要一个导航属性,以便它可以保存Ksiazka
的信息:
public class Ludzie
{
// You need this property
public Ksiazka Ksiazka { get; set; }
}
然后,当您加载Ludzie
,您将可以访问Ksiazka
。 然后,您可以执行以下操作:
// You can access Nazwa
@Html.DisplayNameFor(model => model.Ksiazka.Nazwa)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.