[英]Asp.net MVC Razor not encoding html
我的理解是Razor標記將對html字符串進行編碼,但是我嘗試在MVC視圖中使用以下代碼對其進行測試,但未對html字符串進行編碼。
盡管第一個編碼的字符串由於未由Razor引擎處理而表現正確,但是第二個字符串未由Razor編碼,並且最后一個字符串開頭的<>
部分也未被Razor編碼。
問題 :為什么Razor不能編碼第二和第三字符串,或者我缺少有關Razor如何呈現html字符串的信息?
MVC視圖中的剃刀標記
<script type="text/javascript"></script>
<br />
@("<script type='text/javascript'></script>")
<br />
@("<><script type="text/javascript"></script>")
以上Razor標記的渲染
更新1
我相信正在發生以下情況,但不能確定(也就是說,Razor正在對內容進行編碼,但對於查看瀏覽器呈現版本的用戶而言並不明顯)
我想,剛過第一線br
是開頭@
正在被剃刀編碼,然后在瀏覽器對其進行解碼。 同樣,第二個br
在第二個br
之后的第三行由Razor進行編碼,而已經編碼的部分則被加倍編碼,因此當瀏覽器對其進行解碼時,它仍保持為單個編碼,但<>
是單編碼的,因此它被瀏覽器解碼為<>
。 聽起來對嗎?
更新2
當我在Chrome開發工具中查詢響應輸出時,確實表明Razor正在用括號對字符串進行編碼。 Chrome開發者工具中針對該請求的輸出如下。 因此,我在UPDATE 1中提到的是實際發生的情況。 最后一個字符串被雙重編碼為>
顯示為&gt;
並且第一個字符串被單獨編碼。
因此,我對UPDATE 1中發生的事情100%正確。
<script type="text/javascript"></script>
<br />
<script type='text/javascript'></script>
<br />
<>&lt;script type=&quot;text/javascript&quot;&gt;&lt;/script&gt;
如果要將字符串(包含html)呈現為html而不是字符串,請使用@Html.Raw
函數
來自MSDN @Html.Raw
返回未經HTML編碼的標記。
這會將html呈現為文本
<script type="text/javascript"></script>
這將呈現為html並解析為html文檔
@Html.Raw("<script type='text/javascript'></script>")
這將按原樣呈現字符串
@Html.Raw("<><script type="text/javascript"></script>")
如果您的查詢已解決,請告訴我,
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.