2012-01-24 176 views
18

我正在在MVC3應用程序,我存儲在數據庫中的字符串以這種格式C#HTML字符串顯示

<a href='path'>Text</a> Happy 

領域正確保存,但我必須在網頁中包含的超鏈接顯示它

Text快樂

,但當前正顯示出像

<a href='path'>Text</a> Happy 

如何在網頁上將此字符串呈現爲HTML?

+2

也許這些都不是你的情況的用戶生成的HTML片段,但要確保你瞭解腳本注入的,當你這樣做的風險。 –

+0

所以你在「從db獲取文本」方法中犯了一個錯誤(MrObvious)。你能把你的代碼粘貼到這裏嗎? –

回答

34

如果您使用的剃刀模板引擎:

@Html.Raw(mystring) 
0

我會反對這樣做真的建議,因爲它很難以防止腳本注入問題。

儘管如此,如果您認爲可以進行管理,您應該可以使用@ Html.Raw來呈現文本而不會轉義。

0

如果你不使用剃刀,

和​​

那麼你一定要<%= text %>,不<%: text %>

正如其他人所說,這不是由於HTML注入視爲偉大實踐,但它似乎HTML注入是你的意圖。

+0

對不起,我正在使用剃刀 –

2

它更好的,你把它存儲到數據庫之前的HTML編碼..如果你正在使用.NET Framework 4試試這個

String TestString = "This is a <Test String>."; 
String EncodedString = Server.HtmlEncode(TestString); 

msdn

否則使用anti xss library

其workes像一個神奇的,非常容易實現.. Un-Encoded不僅是危險的,它可以導致XSS攻擊,但它也導致在HTML fornt頁面上呈現時出現問題。

希望它可以幫助..