2011-11-03 65 views
0

想象一下,我有一個帶有1個鏈接(LinkBrands)的表單(Page1.cshtml)。我也有一個Page1(Page1Controller)和一個品牌(BrandController)的控制器。當用戶點擊鏈接什麼是更好的事:mvc中視圖和控制器之間的通信3

  1. LinkBrands - > Page1Controller - > BrandController(Page1Controller的動作會重定向到BrandController)

OR

  1. LinkBrands- - > BrandController

不知道什麼路線更好。有什麼建議麼?

回答

0

通常,每個視圖中沒有單個控制器。您可以在同一個相關控制器上使用多個視圖或部分視圖全部調用操作。我認爲品牌是一個獨立的實體,與Page1試圖展示的任何其他實體不同,因此它應該直接使用BrandController,但是由於實際上沒有足夠的信息來繼續您的示例,因爲我不能說哪個page1的功能你正在試圖去關聯什麼。

如果您需要從品牌鏈接中捕獲與page1相關的信息,那麼請務必先將其收集到page1controller中,然後再重定向到brandcontroller以顯示新視圖。

+0

Page1正在顯示歡迎消息和名爲LinkBrands的鏈接。 是品牌是一個獨立的實體。點擊LinkBrands將在新頁面上顯示所有品牌(查看)。 – Calvin

0

這一切都取決於。

如果你有顯示第二頁之前執行的Page1Controller(保存實例數據)的任何邏輯,那麼你需要通過Page1Controller去,然後去BrandController:

LinkBrands-->Page1Controller-->BrandController 

如果你只是需要重定向到第二頁(您不需要任何來自Page1Controller的任何內容,您不需要它執行任何操作,並且您可以在BrandController中創建第二個頁面的模型),然後使用第二個選項:

LinkBrands-->BrandController 

希望這會有所幫助。

+0

謝謝,有一點幫助;不過,我仍然有點困惑。我想上面的benjamin有一個觀點:「通常你每個視圖都沒有一個控制器。」 – Calvin

+0

當然,但這與您的目標和設計有關。如果Page1Controller和BrandController屬於不同的進程/域,每個進程控制自己的一組視圖並從不同的模型進行提供,那麼很自然它們是分離的控制器。如果情況正好相反,他們是一些相關的,因爲進程/域名,那麼也許應該只有一個控制器有多個視圖。例如,我曾經有一個註冊過程,其中有很多步驟:每個步驟都是不同的視圖,但是單個控制器控制提交信息和視圖以在下一步中顯示。 –

0

你的Page1Controller做什麼?看起來好像你正在擊敗模型 - 視圖 - 控制器體系結構的目的,並試圖用代碼隱藏形式回到WebForms方法。

所以沒有看到你的控制器在做什麼,我會說你的第二個選擇是最好的。

+0

Page1Controller的功能將基於我的問題的答案。我不確定是否應該處理該請求,或者該請求應該由BrandController直接處理。 第一種方法SEEMS更好,因爲頁面的所有請求都由一個控制器處理。控制器將決定請求是否應該重定向到另一個控制器。你怎麼看? – Calvin

相關問題