2011-01-07 68 views
5

對於我的新網站應用程序,我正在討論在視圖中使用多個視圖或條件。在ASP.NET MVC(3.0/Razor)中,你更喜歡視圖中的多個視圖還是條件?爲什麼?

一個示例場景將向正在驗證與未驗證的用戶顯示不同的信息。這可以通過幾種方式來處理。

  1. 在控制器中,檢查IsAuthenticated並返回基於該
  2. 在圖的圖,檢查基於的多個視圖的那

優點信息的IsAuthenticated和顯示塊:較小,不那麼複雜的看法 - 旁邊沒有邏輯的視圖

優點單視圖:較少的視圖文件來維護

顯而易見的缺點是專業人士的反對意見:維護更多文件或更復雜的視圖文件。

你更喜歡哪一種?爲什麼?任何我沒有在這裏列出的優點/缺點?

更新:假設每個視圖使用佈局頁面和部分視圖來抽象明顯重複的代碼。

回答

10

這聽起來像一個很好的場所,討論避免過早泛化的優點。作爲表親不成熟的優化,PG可以一樣癱瘓。我這樣說是因爲我常常過早地概括,它往往從與我調情,我爆笑笑話笑等勸阻的女士

參見:http://ryanfarley.com/blog/archive/2004/04/30/570.aspx

我的經驗一般的規則是這樣的:

重複你自己兩次。
當你要重複自己第三次,創造了一個抽象

我傾向於遵循這個原則在我意見局部模板

  1. 我創建了我的第一個視圖 - 沒有 偏色。
  2. 我創建了我的第二個視圖 - no 偏旁。
  3. 我通過 創建我的第三個查看 第一個和第二個查看代碼塊可重複使用 部分。
  4. 我重複,直到山露都消失了。

雖然我的回答你的問題似乎明顯,我想我想說明一點的是,作爲開發商,我們傾向於享受浪費的大量時間考慮了不同的方式,我們可以從我們個性化的實例中抽象出越來越多的圖層。具有諷刺意味的是,抽象僅僅是有價值的,因爲它減少了重複的必要性,重複只有在它降低了你完成任何事情的可能性時纔是有害的,所以重複性的過度抽象的願望與編碼時一樣有害一堆ON ERROR RESUME NEXT's。

我懷疑這有幫助。可惜。

+1

我不能同意你更多關於過早概括的事情。除了我不喝山露......那東西很討厭:) – Tundey 2011-01-07 12:59:39

+0

哈哈,不錯。我也同意你的意見。只是把它扔到那裏,以防有些角度我沒有想到。雖然你有那麼好的經驗法則。而且,感謝Chirpy ......例如真棒產品,我現在在每個項目中都使用它。 – Chaddeus 2011-01-08 03:18:50

1

我想說這取決於兩種情況有多不同。如果這是一個重大差異或差異,請單獨查看。如果這是多個頁面上出現的差異(如顯示登錄控件與註銷按鈕),請將其設置爲單獨的部分視圖。對於幾個微小的差異,如果塊是好的

+0

好點。如果它有如此小的差異,那麼使用2個單獨的視圖可能是一個壞主意。 – Chaddeus 2011-01-07 05:44:24

1

如果只是一個「if x display y」情況,我更喜歡單個視圖。除此之外,任何事情都可能很容易失控。儘管如此,減少重複的html值得權衡少量的簡單邏輯。

我懷疑這個問題的答案會在中間分得很差,因爲每一方都有自己的優點。

+0

的確如此......我在問,因爲也許有些事我沒有想到(好吧,好吧......可能有些事我沒有想到)。 ;) – Chaddeus 2011-01-07 05:43:56

0

我會說從一個視圖開始......然後根據驗證和未驗證視圖之間的區別有多複雜,您可以創建多個視圖。

相關問題