将我的 ViewModel 传递给 View 并获取单个数据

Passing my ViewModel to View and getting single data

我的 ViewModel 看起来是这样的:

public class WerehouseViewModel
{
    public Werehouse Werehouse { get; set; }
    public WerehouseKey WerehouseKey { get; set; }
}

这就是我从数据库中获取数据的方式

var viewModel =
             from Wh in db.Werehouses
             join WhK in db.WerehouseKeys on Wh.WhID equals WhK.WhID
             where Wh.WhID == id
             select new WerehouseViewModel { Werehouse = Wh, WerehouseKey = WhK };
return View(viewModel);

我知道我必须使用 IEnumerable 类型才能在我的视图中显示,但我只想显示一个 Werehouse(并且只有一个在视图模型中)和 Keys(假设一个 werehouse 有三个键).如何在 table 中的列表中和所有键下方显示一个仓库?因为当我使用

@foreach (var x in Model)
{
    <div>@x.Werehouse.Kod_magazynu</div>
    <div>@x.Werehouse.Ulica</div>
    <div>@x.Werehouse.Numer_magazynu</div>
    <div>@x.Werehouse.Miasto</div>
}

它显示了 3 次相同的数据。

您只能从您的模型中获得第一个仓库:

@{
   var warehouse = Model.Select(x=> x.Werehouse).FirstOrDefault();

   <div>@warehouse.Kod_magazynu</div>
   <div>@warehouse.Ulica</div>
   <div>@warehouse.Numer_magazynu</div>
   <div>@warehouse.Miasto</div>
}

然后你可以循环显示按键:

@foreach (var x in Model)
{
    <div>@x.WerehouseKey.SomeProperty</div>
}