0

情况:假设我们有一个产品列表,每个产品都有一堆订单。我有一个我的索引视图,其中包含模型中包含的产品列表。我遍历列表并在页面上显示产品列表。我为每个项目添加了一个 jquery 点击事件,点击事件为产品列表下方的每个订单加载了部分视图。

订单部分视图如下所示:

@model Order
<p>@Model.orderNum</p>
@Html.DropDownListFor(Order.CustomerName,CustomerNameList)
<input type="submit"/>

索引视图如下所示:

@model List<Products>
@foreach(Product p in @Model)
{<button class="product-button">@p.productId</button>}
<div id="orderDiv"/>

然后我将为产品的每个订单执行以下 javascript:

$("#orderDiv").append($("<div></div>).load("MyController/Order/[order ID would go here]"));

这将为产品具有的每个订单 ID 加载带有单独部分视图的订单。

问题:简单的解决方案是在订单模型中包含 CustomerNameList。但是,我不想多次将该数据加载到页面。有没有办法可以将它放在 ViewBag 中或将其存储在其他地方,以便整个页面都可以使用此列表?

注意:我不想为所有订单使用一个部分视图(即,让订单视图模型成为一个列表并在部分视图中对其进行迭代),因为我希望能够单独提交每个订单(到保存它)我还可能需要在页面的其他部分使用此客户列表。我想保持可用。例如,也许我有一个显示新订单的按钮,它使用 ajax 加载部分视图,并且该部分视图还需要客户列表。我不想多次将该数据发送到页面。

我可以这样做吗?

这只是一个不好的方法吗?

4

1 回答 1

0

不太清楚为什么要为现有订单加载用户下拉列表。这意味着您希望设施更改谁下的命令?

但是,如果必须,您可以将客户下拉列表加载为带有客户类的空下拉列表,然后可以进行内部调用以获取客户的 json,然后加载客户类的所有实例,使用来自您对客户数据的 json 调用的数据。

这将允许您列出 50 个订单,其中包含一个客户数据集合。

不过,就个人而言,您应该使用外键与您的模型建立关系,或者使用已经添加到您的客户列表中的视图模型,您也只希望向用户显示完整的订单详细信息,如果他们单击该行以显示完整细节。

即使有人在屏幕上发了疯,点击所有 50 来查看,您应该仍然可以轻松处理这些请求,否则同样您将无法让 50 位客户同时查看那里的篮子,或 50 位客户同时搜索产品数据库!

于 2013-03-30T00:23:03.150 回答