Razor默认对字符串进行编码。没有编码的渲染有什么特殊的语法吗?
以及已经提到的@Html.Raw(字符串)方法,如果你输出一个MvcHtmlString,它将不会被编码。在向HtmlHelper添加自己的扩展时,或者从视图模型返回您知道可能包含html的值时,这可能很有用。
例如,如果你的视图模型是:
public class SampleViewModel
{
public string SampleString { get; set; }
public MvcHtmlString SampleHtmlString { get; set; }
}
对于Core 1.0+(和MVC 5+)使用HtmlString
public class SampleViewModel
{
public string SampleString { get; set; }
public HtmlString SampleHtmlString { get; set; }
}
then
<!-- this will be encoded -->
<div>@Model.SampleString</div>
<!-- this will not be encoded -->
<div>@Html.Raw(Model.SampleString)</div>
<!-- this will not be encoded either -->
<div>@Model.SampleHtmlString</div>
请谨慎使用@Html.Raw(),因为您可能会在编码和安全性方面带来更多麻烦。我理解用例,因为我必须自己做这件事,但是要小心……只要避免让所有文本通过即可。例如,只保留/转换特定的字符序列,并始终对其余的字符进行编码:
@Html.Raw(Html.Encode(myString).Replace("\n", "<br/>"))
然后你就可以放心了,你没有创建一个潜在的安全漏洞,任何特殊/外来字符都能在所有浏览器中正确显示。
对于ActionLink,它通常使用HttpUtility。对链接文本进行编码。 这样的话 你可以使用 HttpUtility.HtmlDecode (myString) 它为我工作时使用HtmlActionLink解码字符串,我想传递。例如:
@Html ActionLink (HttpUtility . HtmlDecode(“myString”、“ActionName……)
推荐文章
- 实体框架核心:在上一个操作完成之前,在此上下文中开始的第二个操作
- 如何为构造函数定制Visual Studio的私有字段生成快捷方式?
- 为什么Visual Studio 2015/2017/2019测试运行器没有发现我的xUnit v2测试
- ASP中基于角色的访问控制(RBAC)与基于声明的访问控制(CBAC)NET MVC
- 如何使用JSON确保字符串是有效的JSON。网
- AppSettings从.config文件中获取值
- 通过HttpClient向REST API发布一个空体
- 如何检查IEnumerable是否为空或空?
- 自动化invokerrequired代码模式
- 没有ListBox。SelectionMode="None",是否有其他方法禁用列表框中的选择?
- 在c#代码中设置WPF文本框的背景颜色
- 在c#中,什么是单子?
- 带有空模型的Renderpartial传递了错误的类型
- c#和Java中的泛型有什么不同?和模板在c++ ?
- c#线程安全快速(est)计数器