2016-02-12 78 views
0

如何根據模型的屬性值在視圖中添加自定義HTML?基於模型屬性值在視圖中呈現html片段

例如,我的模型具有可以具有值「ABC」,「DEF」或「GHI」的字符串屬性「MyType」。

然後,在視圖中,我想輸出大量的HTML,特定於與模型一起傳遞的個人「MyType」。

我知道在視圖中,我可以有一個輔助函數,它看起來在Model.MyType,並有一個switch語句來顯示一些HTML,但有沒有更好的方法來做到這一點,從HTML中抽象出HTML視圖?

即使我可以創建一個輔助函數,該函數會有一個開關,但是隨後調用cshtml文件來獲取適當的HTML。我想有點像DisplayTemplates如何工作,但我不能真正使用這些,因爲這意味着它將被稱爲每個STRING,而不是我的模型特定的屬性...

回答

0

那麼,首先你可以使用只要您使用[UIHint("Foo")]註釋修飾您的財產,就可以顯示模板。 「Foo」部分對應於特定的顯示模板,因此您可以針對不同類型的字符串使用不同的顯示模板。

但是,部分可能是你最好的選擇。您可以將每個MyType值的HTML位用相同的名稱分成部分。然後,你可以叫:

@Html.Partial(Model.MyType) 

換句話說,您可以直接通過類型作爲部分的名稱使用。請注意,這些值始終與項目中存在的部分相對應,否則您將開始出現異常。如果有人決定爲MyType添加另一個值,並且忽略添加關聯的部分,則您的應用會出現繁榮。你可以加一點安全,通過檢查與已知的諧音價值,只有呈現部分,如果它是其中的一個:

@if (new[] { "ABC", "DEF", "GHI" }.Contains(Model.MyType)) 
{ 
    @Html.Partial(Model.MyType) 
} 

那麼,至少,最壞的情況是沒有東西呈現。