2011-04-04 53 views
8

我有一個簡單的模型:如何像asp:Literal一樣使用Razor?

public class MyModel 
{ 
    public string Text{get;set;} 
} 

我有一個觀點,這使得爲MyModel的Text屬性:

<p>@Model.Text</p> 

如何從喜歡的標籤文本渲染html標籤?例如,我有文本「<b>Text</b>」。我想獲取標記P內粗體文字作爲結果:

文本

但剃刀渲染文本是:

<b>Text</b> 

回答

19

我認爲你需要使用它喜歡:

<p>@Html.Raw(Model.Text)</p> 

你可以在Phil Haack的博客上找到更多信息here

anurse中,你可以,或者,將您的視圖模型類型的Text成員的類型爲IHtmlString,只需使用@Model.Text輸出它的評論指出。 ASP.NET MVC很聰明,意識到輸出不應該被轉義。

+3

這是一個很好的解決方案,當你想偶爾渲染一些沒有HTML編碼的內容。當你知道你的模型的一個屬性總是HTML內容不應該被自動編碼時,你應該製作該屬性的IHtmlString類型。因此,如果您將文本更改爲IHtmlString而不是字符串,則可以鍵入@ Model.Text,Razor將正確輸出標籤。這樣,顯然某些內容是HTML,應該仔細清理以避免HTML注入攻擊。 – 2011-04-04 17:37:01

+0

@anurse:哇,好評。我自己不知道。我將更新答案以添加此信息。 – paracycle 2011-04-05 08:07:18

相關問題