2010-09-03 39 views
1

alt text如何在這種情況下在asp.net mvc應用程序中構建views/controllers/actions(/ areas?)?

頂部有關於foo的一些最有用的信息。

水平線之間有一些即時動作,如果它們可用,在foo上執行。

以下是困擾我的事情。有標籤,有關foo的詳細信息。
這些選項卡也可以執行一些操作,並且可以相當主權。

所以問題是 - 如何正確構建這件事情,以避免不必要的拼勁(應該是什麼控制器,動作,他們如何談論對方)?

我很困惑,因爲下面的這些標籤就像一個獨立的島嶼。


在模型中 - 有那麼奇怪的事情:1對1的關係。這就像有一個Contest(Foo)和Participant。標籤是Participant的詳細說明。

目前我已經將它們建模爲aggregate roots。但這可能是一個錯誤的選擇。

所以 - 如果有兩個根,這似乎很自然,如果他們都得到控制器和Contest是不是真的有責任保存所有數據。

看來,子動作將是要走的路,但我預見到一些複雜性。當選項卡將執行一些操作時,他們將需要知道如何重定向回Contest的詳細信息以及如何傳遞信息如何呈現正確的選項卡。我想避免這種耦合,但似乎沒有辦法做到這一點。

+0

是AJAX的一個選項嗎? – 2010-09-03 17:10:25

+0

@Darin它是,但我不確定我想要。認爲它可以做得更好。 – 2010-09-03 18:22:42

回答

3

我可以想到這些標籤的幾個選項......哪一個有意義取決於您的模型是什麼樣子,如何檢索數據以及在某種程度上取決於應用程序的其他部分。

選項1。使用RenderPartial()的部分視圖。每個選項卡都是呈現模型某個部分的局部視圖。例如,您將擁有一個呈現Model.FinancialInformation的FinancialInformation.aspx分部視圖。

選項2a。使用RenderAction()的子操作。除了每個選項卡負責通過調用操作方法來提取自己的數據,不管是在同一個控制器上還是更有可能是另一個專門處理該信息的控制器。

選項2b。除了使用AJAX按需呈現選項卡外,其他與2a相同。

我應該指出,這些選項都不是互斥。您可能會對前兩個選項卡使用選項1(RenderPartial()),因爲該數據本身就是您模型的一部分。你可以使用選項2(RenderAction())作爲其他兩個選項卡,因爲,例如,你可能有一個ChartController專門提供圖表......

+0

增加了一些細節。想聽聽你的更多評論。 :) – 2010-09-04 19:58:57