2009-10-07 66 views
6

在我們的標準Web表單ASP.NET解決方案中,我們通常在主頁面中包含一系列用戶控件,並確定它們是否在其代碼後面顯示。 ASP.NET MVC中實現相同目標的最佳方法是什麼?如何在ASP.NET MVC中控制局部視圖的條件顯示

你很明顯可以在主頁面或局部視圖中顯示if語句,但這會讓我感到雜亂無章,並且違反了將業務邏輯放在視圖之外的原則。它還要求將必要的信息放入所有的視圖模型中,或者從基本控制器繼承,這似乎是一件很簡單的事情。

我正在考慮使用RenderAction並返回一個完全空白的視圖來防止任何輸出 - 這是一個好的模式嗎?

回答

3

打破了保持業務邏輯出視圖

的原則,是不是業務邏輯。當您決定是否顯示某些內容時,它是表示邏輯。可以在那裏。

您可以決定是否顯示某些內容並在模型中設置幾個標誌(例如,您可以製作BaseModel或MasterModel)。然後,您的主視圖,部分視圖本身或HTML助手將根據這些標誌執行條件呈現。

至於關注的完全分離,是的,可能的WebForms看似做到這一點,但它是相當的基本機制的一個巨大的抽象。通常它會導致代碼隱藏中的業務邏輯,也就是說,在業務邏輯所屬的表示層中,只有它屬於視圖。

+1

我第二。有一堆「RenderPartialIfNotNull(」Foo「,Model.Something)」調用。 – 2009-10-07 08:49:07

+0

對不起,是的,我的意思是UI邏輯不是業務邏輯 – 2009-10-07 15:11:00

相關問題