局勢: 讓我們說,我們有一個產品的列表,並且每個都有一堆訂單。我有一個我的索引視圖,它包含模型中包含的這個產品列表。我遍歷列表並在頁面上顯示產品列表。我爲每個項目添加一個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,這聽起來很乏味。不,如果你的問題是這樣指導的,我會盡力避免,如果我能。 –