情况:假设我们有一个产品列表,每个产品都有一堆订单。我有一个我的索引视图,其中包含模型中包含的产品列表。我遍历列表并在页面上显示产品列表。我为每个项目添加了一个 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 加载部分视图,并且该部分视图还需要客户列表。我不想多次将该数据发送到页面。
我可以这样做吗?
这只是一个不好的方法吗?