局势: 让我们说,我们有一个产品的列表,并且每个都有一堆订单。我有一个我的索引视图,它包含模型中包含的这个产品列表。我遍历列表并在页面上显示产品列表。我为每个项目添加一个jquery点击事件,点击事件为产品列表中的每个订单加载一个局部视图。访问主要查看数据从ajax局部视图
令部分观点是这样的:
@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 pr oduct了。
问题: 简单的解决方案是在Order Model中有CustomerNameList。但是,我不想将这些数据加载到页面上很多次。有没有一种方法可以将它放在ViewBag中或将它存储在其他地方,以便此列表可用于整个页面?
注意: 我不想用一个局部视图,所有的订单,因为我希望能够(即有顺序视图模型是一个列表,并在局部视图遍历它。)分别提交每个订单(将其保存) 我也可能需要在我的页面的其他部分使用此客户列表。我想保持它可用。例如,也许我有一个按钮,说新的订单,这使用ajax加载一个部分视图,部分视图也需要客户名单。我不想将这些数据发送到页面那么多次。
我可以这样做吗?
这只是一个不好的方法来做到这一点?
不建议朝这个方向思考。理想情况下,您的渲染数据将从顶部视图流向“儿童”。如果您想要传递任何信息,请使用部分模型进行操作。不同的流程将变成“意大利面条”... –
因此,如果产品有50个订单,那么您的推荐是正确的方法,即将服务器的下拉列表加载到客户端50次。一次用于呈现订单的每个部分视图。 – kralco626
yigh,这听起来很乏味。不,如果你的问题是这样指导的,我会尽力避免,如果我能。 –