簡體   English   中英

ASP.NET MVC和AJAX

[英]ASP.NET MVC and AJAX

我有一個視圖,它由頂部,左側和底部標題以及主要內容窗格組成。 假設在AJAX請求期間我需要更新頂部,底部和主面板的HTML(左側標題應保持不變)。

我想知道實現這一目標的最佳方法是什么。 第一個想法是將主內容面板放入局部並具有將返回PartialView的控制器操作。 這不起作用,因為當操作僅返回主窗格的HTML時,我無法更新頂部和底部標題。

因此,如果我將頂部和底部標題放入各自的部分視圖中,我將需要我的控制器操作來返回多個部分視圖。 這有可能嗎或我正在做一些完全偏離軌道的事情?

我看到可以渲染一個字符串的局部視圖,所以我認為我可以在動作中使用這種技術來返回一個JSON對象,該對象具有3個屬性,表示我需要更新的3個部分的HTML。 但如果可能的話,這對我來說就像是一種非常錯誤的方法。

我的另一個想法是返回一個只包含部分所需數據的JSON對象,並使用javascript構造HTML。 但是在javascript中構建UI看起來很困難(主要內容部分使用MvcContrib的GridView進行分頁和排序)。

因此,我非常感謝有關處理此類情況的最簡潔方法的建議。 自適應解決方案也很棒:例如,如果用戶禁用了javascript,它只會在沒有AJAX的情況下重新加載整個頁面。


更新:

Andrew Siemer 建議將每個部分放入其自己的部分視圖中並執行多個ajax請求。 這似乎是一種非常有效的方法,但遺憾的是它不適用於我的場景,因為我在初始問題描述中遺漏了以下細節:頂部標題實際上用於顯示主面板中發生的事件的錯誤/信息消息。 因此,例如,我需要顯示錯誤消息,以防在獲取主面板的模型時拋出異常。 因此,只有一個請求才能更新這兩個面板。

您可以輕松地將每個部分放入其自己的局部視圖中。 這樣,您就可以在提交/更改數據后為每個視圖發出jquery請求。 然后可以將每個呼叫推送到適當的部分。 這是非常可行的,聽起來像是適當的路徑。

我不希望你的控制器返回多個部分視圖......因為這會破壞SRP!

更新:在您的更新中...您仍然可以單獨獲取這些部分。 這只需要更多ajax的酷感,因為每次獲取都可以返回一個錯誤塊(通過JSON請求)。 如果出現任何錯誤,則可以在標題中顯示這些錯誤消息。 或者......一旦所有其他請求報告回來,您可以使標頭請求最后出錯,在這種情況下,每個局部視圖都可以將錯誤消息丟給錯誤狀態的會話變量...然后顯示這些消息標題。

在初始設計中,選擇使用每個部分作為其自己的部分而不是一個超級請求的一個重要原因可能尚不明顯。 隨着每個部分被單獨控制,您可以做一些奇特的事情,例如獨立地緩存每個部分,在一個區域中提供更頻繁的更新,等等。

這是一個棘手的問題。 這個怎么樣?

為每個組件top,left,main設置部分請求 ,每個組件返回一個部分視圖,其中包含該區域所需的數據。 然后,每當主面板中有一個事件時,就會刷新每個區域中的部分以更新它們。

或者將它們全部放在固定計時器上以輪詢新數據。

如何在主視圖中的隱藏div中包含頂視圖和右視圖,並將它們移動到正確的加載位置?

我知道這個問題已得到解答,但我想我只是提出一個建議:

  • Backbone.js和jQuery模板可以輕松解決您的問題。

(這里只是留下這個作為人們閱讀這個問題的建議)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM