2013-11-20 86 views
0

我在CONTROLER一種方法,其中我通過查看與不同類型的類似對象:傳遞不同類型的,以查看

case ItemType.Magnets: 
{ 
    return View(dbHelper.Magnets.Details(id)); 
} 
case ItemType.Maps: 
{ 
    return View(dbHelper.Maps.Details(id)); 
} 

如何可以寫爲這個視圖?

+0

如果磁鐵和貼圖是子類並繼承自相同的基類,那麼您可以爲此創建視圖。否則,我不知道,我不認爲你應該對不同類型有相同的看法。 – Tobberoth

+0

'Details(id)'返回的類型是否相同? –

+0

更新了答案。 – AgentFire

回答

1

您可能想創建兩個不同的視圖,每個視圖都稱爲唯一視圖,並且每個視圖都接受其自己的視圖模型。

您還需要在控制類指定視圖的名字:

return View("ViewName_1", dbHelper.Maps.Details(id)); 

return View("ViewName_2", dbHelper.Magnets.Details(id)); 

@AlexDefine除非你想創建一個通用視圖中的所有類型的屬性,這並不容易。

部分原因我在這裏:

@model object 

<table> 
    @{ 
     var properties = from prop in ViewData.ModelMetadata.Properties 
         let propInfo = prop.ContainerType.GetProperty(prop.PropertyName) 
         where !ViewData.TemplateInfo.Visited(prop) 
         select prop; 
    } 

    @foreach (var prop in properties) 
    { 
     <tr> 
      <td> 
       <div style="float: right;"> 
        @prop.GetDisplayName() 
       </div> 
      </td> 
      <td> 
       <div class="editor-field"> 
        @Html.Editor(prop.PropertyName, new { ContainerModel = Model }) 
       </div> 
      </td> 
     </tr> 
    } 
</table> 

更多或更少,這使得任何一種型號的表。但你應該自己升級它以滿足你的需求。

+0

那麼我知道,但我正在尋找更快的方式..在您的情況下,我需要爲每種產品類型創建12個視圖,這是很多。 –

+0

謝謝,多數民衆贊成在:) –

1

您需要爲不同的項目創建不同的視圖。這裏是解決

case ItemType.Magnets: 
{ 
    return View("MagnetsView",dbHelper.Magnets.Details(id)); 
} 
case ItemType.Maps: 
{ 
    return View("Maps",dbHelper.Maps.Details(id)); 
} 

如果你想顯示磁鐵您需要創建磁鐵視圖項目。地圖也一樣。