我正在在MVC3應用程序,我存儲在數據庫中的字符串以這種格式C#HTML字符串顯示
<a href='path'>Text</a> Happy
領域正確保存,但我必須在網頁中包含的超鏈接顯示它
Text快樂
,但當前正顯示出像
<a href='path'>Text</a> Happy
如何在網頁上將此字符串呈現爲HTML?
我正在在MVC3應用程序,我存儲在數據庫中的字符串以這種格式C#HTML字符串顯示
<a href='path'>Text</a> Happy
領域正確保存,但我必須在網頁中包含的超鏈接顯示它
Text快樂
,但當前正顯示出像
<a href='path'>Text</a> Happy
如何在網頁上將此字符串呈現爲HTML?
如果您使用的剃刀模板引擎:
@Html.Raw(mystring)
如果您使用的剃鬚刀,你可以使用@Html.Raw()
按菲爾哈克的quick reference
我會反對這樣做真的建議,因爲它很難以防止腳本注入問題。
儘管如此,如果您認爲可以進行管理,您應該可以使用@ Html.Raw來呈現文本而不會轉義。
如果你不使用剃刀,
和
那麼你一定要<%= text %>
,不<%: text %>
正如其他人所說,這不是由於HTML注入視爲偉大實踐,但它似乎HTML注入是你的意圖。
對不起,我正在使用剃刀 –
它更好的,你把它存儲到數據庫之前的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頁面上呈現時出現問題。
希望它可以幫助..
也許這些都不是你的情況的用戶生成的HTML片段,但要確保你瞭解腳本注入的,當你這樣做的風險。 –
所以你在「從db獲取文本」方法中犯了一個錯誤(MrObvious)。你能把你的代碼粘貼到這裏嗎? –