2012-03-27 137 views
0

我有一個檢索來自DB的事件和passwing查看一個動作:避免開關塊

public ActionResult EventOverview(int id, string type) 
     { 
      var model = CreateEventViewData<EventViewData>(id); 
      switch (type) 
      { 
       case "Concert": 
        return View("Controls/EventsInfo/ConcertInfo", model); 
       case "Film": 
        return View("Controls/EventsInfo/FilmInfo", model); 
       case "Exhibition": 
        return View("Controls/EventsInfo/ExhibitionInfo", model); 
       case "Evening": 
        return View("Controls/EventsInfo/EveningInfo", model); 
       case "MasterClass": 
        return View("Controls/EventsInfo/MasterClassInfo", model); 
       case "Performance": 
        return View("Controls/EventsInfo/PerformanceInfo", model); 
       case "Sport": 
        return View("Controls/EventsInfo/SportInfo", model); 
      } 

     } 

問題,即(ConcertInfoFilmInfo ...)含有大量的重複代碼的所有視圖(JS ,標記)。我想創建一般視圖和小的單獨視圖。
一般認爲(EventInfo):

<script type="text/javascript"> 
     general js code 
    </script> 
    <div id="container"> 
     <div id="content"> 
      <div class="section"> 
       @switch(Model.Type) 
      { 
       case "Film": // load concrete view 
        @Html.Partial("Controls/EventsInfo/FilmInfo", Model.Event); 
        break; 
        //and so on 
      } 
       @Html.Partial("Controls/SocialListShare") 
       <div class="wrap_tabs"> 
        <ul class="tabs infoMovieTabs"> 
         <li><a href="#"><span class="title">General</span> </a></li> 
         <li><a href="#" class="active"><span class="title">Schedule</span> </a></li> 
         <li><a href="#"><span class="title">News</span> </a></li> 
         <li><a href="#"><span class="title">Review</span> </a></li> 
         <li><a href="#"><span class="title">Photo</span> </a></li> 
         <li><a href="#"><span class="title">Video</span> </a></li> 
        </ul> 
       </div> 
       <div id="publicationBlockContent" class="contentTabs"> 
       </div> 
      </div> 
     </div> 
    </div> 

該解決方案避免重複,但我在視圖

問題switch塊:什麼是確定要顯示什麼樣的看法(或如何最好的辦法爲我的代碼避免switch塊)?

感謝和抱歉我的英語。

回答

2

您可以使用模板來解決問題。 This是一個很好的介紹。

因此,而不是使用自定義名稱爲您的意見,並在控制器將它們發送到特定視圖,您可以使用自己的類型名稱,並把意見在Views\Shared\DisplayTemplates然後使用DisplayFor一個共同的看法輸出部分類型。

+0

謝謝。但是,所有字段(用於電影,用於音樂會...)包含在一張表中。 – user348173 2012-03-27 09:20:38

+0

如果您知道它們在同一個表格中,只需在模板中輸出TR,TD。 – Aliostad 2012-03-27 09:22:19