2011-05-06 126 views
0

我有2種不同類型的數據要顯示(例如用戶和產品)。根據條件我需要顯示用戶或產品。我聽說最好的做法是,我們需要引入擴展方法,只要我們想要添加,如果查看。但是,用戶和產品的html似乎太複雜,難以編碼爲擴展方法。有沒有什麼最好的做法來解決這個問題?asp.net mvc根據條件顯示不同的內容

回答

0

我決定使用this解決方案(#18 html helper擴展)。將它與this擴展方法結合起來。它將允許編寫像這樣的html.RenderMyPageData(模型); 如果將在方法內部封裝。並且它不會使用字符串生成器生成html,但會使用準備工作的部分視圖。

0

我想在視圖中有if s的關注可能會引入業務邏輯(它在表示層中沒有位置)。

您使用if純粹與演示有關嗎?然後在視圖中使用它。

if是否實現了一些業務邏輯?重新考慮你的設計。

如果您仍然在視圖中使用if(並且不知道更多關於您的項目),我不確定爲什麼您需要使用擴展方法。我沒有看到任何類似的問題:

<% 
    if (someCondition) 
    { 
     Html.RenderAction("User", "Index"); 
    } 
    else 
    { 
     Html.RenderAction("Product", "Index"); 
    }  
%> 
+0

格雷厄姆,當然這是要走的道路之一。但看起來很尷尬,不是嗎?如果我有5個類似的東西要顯示,我會有意大利麪代碼。這就是爲什麼而不是使用,如果它的建議製作和擴展方法。你會使用它像Html.MySpecialMarkup(模型) – 2011-05-06 14:38:13

0

使用if stmt確實不是意大利式麪條,因爲您不會在代碼之間來回切換。它也相當可讀。在這種情況下使用擴展方法,您不會對任何html進行硬編碼,而只是再次重定向到要返回的特定操作,所以它的問題要麼是在視圖中具有相同的代碼 - 要麼是在您的擴展中處理視圖的邏輯方法。