当前位置:  开发笔记 > 后端 > 正文

在Razor视图中发出未编码的字符串

如何解决《在Razor视图中发出未编码的字符串》经验,为你挑选了3个好方法。

正如ScottGu在他的博客文章中所说的那样«默认情况下,使用@ block发出的内容会自动进行HTML编码,以更好地防范XSS攻击情形» 我的问题是:如何输出非HTML编码的字符串?

为简单起见,请坚持这个简单的案例:

@{
 var html = "Click me"
 // I want to emit the previous string as pure HTML code...
}

miguelv.. 109

这是我最喜欢的方法:

@Html.Raw("

my paragraph text

")

来源是Phil Haack的Razor语法参考:http://haacked.com/archive/2011/01/06/razor-syntax-quick-reference.aspx



1> miguelv..:

这是我最喜欢的方法:

@Html.Raw("

my paragraph text

")

来源是Phil Haack的Razor语法参考:http://haacked.com/archive/2011/01/06/razor-syntax-quick-reference.aspx



2> aolde..:

您可以创建一个不会获得HTML编码的MvcHtmlString的新实例.

@{
  var html = MvcHtmlString.Create("Click me")
}

希望Razor的未来有一个更简单的方法.

如果您没有使用MVC,可以试试这个:

@{
  var html = new HtmlString("Click me")
}


实际上你也可以在MVC 3中使用`new HtmlString()`,因为那个类型是.NET 4.

3> Erik Porter..:

新的HtmlString绝对是答案.

我们研究了其他一些剃刀语法的变化,但最终它们都没有真正比新的HtmlString更短.

但是,我们可以将其包装成一个帮手.也许...

@Html.Literal("

something

")

要么

@"

something

".AsHtml()


我们希望避免在不涵盖主要用户案例的情况下添加语法结构.大多数情况下,你将使用辅助方法来构建字符串,IHtmlString在那里工作得很好.对于需要输出没有帮助器的文字字符串的奇怪情况,我们可以为您提供一种方法:@Literal(foo)或类似方法.
推荐阅读
N个小灰流_701
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有