gpt4 book ai didi

asp.net-mvc - 如何从多个模型中设置一个 Viewmodel?

转载 作者:行者123 更新时间:2023-12-03 10:29:33 25 4
gpt4 key购买 nike

我想在我的 View 中检索表格的一个单元格中的多个项目。我有几个模型,产品、包(作为类别)、订单和订单详细信息。我认为要实现我想要的,我应该使用来自我的模型的数据创建一个 View 模型,但我真的不知道如何做到这一点以及我应该绑定(bind)哪些数据。

这是我的看法

@foreach (var item in Model)
{
<tr>
<td>
@Html.DisplayFor(modelItem => item.OrderId)
</td>
<td>
@Html.DisplayFor(modelItem => item.Username)
</td>
<td>
@Html.DisplayFor(modelItem => item.ClientID)
</td>
<td>
@Html.DisplayFor(modelItem => item.SiteNumber)
</td>
<td>
@if (item.Pack == null)
{
<ul>
@foreach (var tmp in item.????) //PRODUCT
{
<li>Html.DisplayFor(modelItem => tmp.Name) </li>
}
</ul>
}
else
{
<ul>
@foreach (var tmp in item.????) //PACK
{
<li>Html.DisplayFor(modelItem => tmp.Name) </li>
}
</ul>
}
</td>

<td>
@{
if (item.Pack == null)
{
<ul>
@foreach (var tmp in item.????) // PRODUCT
{
<li>Html.DisplayFor(modelItem => tmp.UnitPrice)
</li>
}
</ul>
}
else
{
<ul>
@foreach (var tmp in item.????) //PACK
{
<li>
@Html.DisplayFor(modelItem => tmp.UnitPricePack)
</li>
}
</ul>
}
}

</td>
<td>
@Html.DisplayFor(modelItem => item.Quantity)
</td>
<td>
@Html.DisplayFor(modelItem => item.Total)
</td>
<td>
@Html.DisplayFor(modelItem => item.OrderDate)
</td>
</tr>

我希望我的 table 最后看起来像这样:

enter image description here

我的问题又来了,如何创建 ViewModel 以在我的 View 中检索数据并使其与 ma 表中的 @foreach 条件匹配...我不知道我是否足够清楚...这篇文章关注 this one .实际上,我所做的一切都是错误的,我真的不知道如何设置我的 View 模型,我需要绑定(bind)哪些数据以及如何绑定(bind)。感谢您的帮助,您的建议,我接受所有

最佳答案

您不一定需要新的 ViewModel,Order 拥有您所需要的一切。您的模型将是一个订单列表。

@foreach (var item in Model)
{
<tr>
<td>
@Html.DisplayFor(modelItem => item.OrderId)
</td>
<td>
@Html.DisplayFor(modelItem => item.Username)
</td>
<td>
@Html.DisplayFor(modelItem => item.ClientID)
</td>
<td>
@Html.DisplayFor(modelItem => item.SiteNumber)
</td>
<td>
<ul>
@foreach (var o in item.OrderDetails)
{

if (o.Pack == null)
{
<li>@Html.DisplayFor(modelItem => o.Product.Name) </li> //PRODUCT
}
else
{

<li>@Html.DisplayFor(modelItem => o.Pack.Name) </li> // PACK

}
}
</ul>
</td>
<td>
<ul>
@foreach (var o in item.OrderDetails)
{

if (o.Pack == null)
{
<li>@Html.DisplayFor(modelItem => o.UnitPrice) </li> //PRODUCT
}
else
{
<li>@Html.DisplayFor(modelItem => o.UnitPricePack) </li> //PACK
}
}
</ul>
</td>
<td>
<ul>
@foreach (var o in item.OrderDetails)
{
<li>@Html.DisplayFor(modelItem => o.Quantity)</li>
}
</ul>
</td>
<td>
@Html.DisplayFor(modelItem => item.Total)
</td>
<td>
@Html.DisplayFor(modelItem => item.OrderDate)
</td>
</tr>
}

根据您的更新更新:

您仍在尝试传递 orderdetails 集合而不是 order

而不是这个:
        var user = from m in db.OrderDetails
select m;

有这个(假设你有 Orders 表):
    public ActionResult Index(string searchSite, string searchString)
{

var user = from m in db.Orders
select m;

if (!String.IsNullOrEmpty(searchString))
{
user = user.Where(s => s.ClientID.Contains(searchString));
}

if (!String.IsNullOrEmpty(searchSite))
{
user = user.Where(c => c.SiteNumber.Contains(searchSite));
}
return View(user);
}

关于asp.net-mvc - 如何从多个模型中设置一个 Viewmodel?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12315287/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com