繁体   English   中英

一个视图中有两个模型

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM