ASP.Net MVC如何用不在浏览器中解析的内容替换HTML标记

ahm*_*iee 1 html c# asp.net unicode asp.net-mvc

如果生成HTML字符串Like

ViewBag.FinalHTML="<a href=\"http://stackoverflow.com\">StackOverFlow</a>";
Run Code Online (Sandbox Code Playgroud)

然后尝试使用以下代码在View中显示它:

This is the best Q&A for programming questions: @ViewBag.FinalHTML
Run Code Online (Sandbox Code Playgroud)

然后结果将是这样的:

This is the best Q&A for programming questions: <a href="http://stackoverflow.com">StackOverFlow</a>
Run Code Online (Sandbox Code Playgroud)

(我知道我怎么能这样做.我有另一个问题!)

ASP.Net MVC是如何做到的?

Dar*_*rov 5

@函数使用该HttpUtility.HtmlEncode方法安全地编码传递给它的所有内容.

如果您不希望发生此自动编码,请使用以下@Html.Raw方法:

@Html.Raw(ViewBag.FinalHTML)
Run Code Online (Sandbox Code Playgroud)

显然,通过这样做,你应该确保这FinalHTML绝对不是来自用户输入,而是由你在服务器上生成的.否则,您将在您的网站上打开一个巨大的XSS漏洞.