Razor中HtmlEncodeString和Raw方法

HtmlEncodeString和Raw的使用

1,RazorTest类:

public static HtmlEncodedString Test1() { //HtmlEncodedString对字符串做了htmlencode,比如将将 < 转义成&lt; return new HtmlEncodedString("<input type=‘text‘ value=‘请输入‘/>"); } public static RawString Test2() { return new RawString("<input type=‘text‘/>"

);
        }

2,在cshtml文件调用这两个方法

<body>

   @RazorTest.Test1()

<br />

    @RazorTest.Test2()

<br /> </body>

3,结果

查看页面:

源代码:

结论:

htmlEncodeString将字符串进行了htmlEncode

RawString则原样输出了字符串



注意:@后的表达式是字符串,会被直接htmlEncode

例1:

1,RazorTest中Test3()

public static String Test3()
        {
            return "<input type=‘text‘/>";
        }

2,cshtml中调用Test3()

<body>

@RazorTest.Test3()

</body>

3,结果

查看页面:

HTML源代码:

例2:

1,ashx.cs代码:

string html = RazorHelper.ParseRazor(context, @"~/Razordemo/Razor2.cshtml", new { Gender=gender,Name="C#泛型的使用List<T>"});

2,cshtml代码:

<body>
@Model.Name <br />
</body>

查看页面:

HTML源代码:

然而,我要改变!

如果不想被htmlEncode,就要将Model.Name原样输出呢?

RawString类:顾名思义可以将原始字符串,也就是说会将输入的代码,原样输出到HTML中。

可以自己封装一个返回值为RawString类型的方法,把Name传进来,返回一个RawString对象即可。

例3:

封装一个返回值为RawString类型的方法HtmlToRaw

public static RawString HtmlToRaw(string html) { return new

 RawString(html);
        }

1,ashx.cs代码:

string html = RazorHelper.ParseRazor(context, @"~/Razordemo/Razor2.cshtml", new {Html="<span style=‘background-color:yellow‘>这里是魔都</span>"});

2,cshtml代码:

<body>


 @RazorTest.HtmlToRaw(Model.Html)

</body>

3,结果

查看页面:

HTML源代码:

上面我们知道了,

HtmlEncodeString可以将字符串转换为HTML编码(如:< 转换为 &lt;)

RawString可以将字符串原样输出(如:<span style=”background-color: yellow”>原样输出到HTML)

下面对HtmlEncodeString和RawString做个对比

1,HtmlEncodeString的定义:

public class HtmlEncodedString : IEncodedString
    {
        public HtmlEncodedString(string value);

        public string ToEncodedString();
        public override string ToString();
    }

2,RawString转向定义的样子:

public class RawString : IEncodedString
    {
        public RawString(string value);

        public string ToEncodedString();
        public override string ToString();
    }

从定义可以看到,两者均继承自IEncodedString接口,都有ToEncodedString()方法

测试发现,调用RawString类的ToEncodedString()方法,跟调用返回值HtmlEncodedString类型的方法结果是一样一样的,会将字符串HtmlEncode

例:

1,RawString类的ToEncodedString方法

public static string HtmlToEncode(string html)
        {
            return new RawString(html).ToEncodedString();
        }

2,cshtml页面调用

<body>

@RazorTest.HtmlToEncode(Model.Html)

</body>

结果:

查看页面:

HTML源代码:

不过,调用RawString类的ToEncodedString方法来htmlEncode有点麻烦,还是直接使用HhtmlEncodeString类来htmlEncode方便。

时间: 2024-07-31 15:33:23

Razor中HtmlEncodeString和Raw方法的相关文章

Asp.Net Core-几行代码解决Razor中的嵌套if语句

MVC开发中,经常会遇到在razor中插入简单的逻辑判断. @if (clientManager.IsAdmin) { if (!Model.Topic.Top) { <a asp-action="Top" asp-controller="Topic" asp-route-id="@Model.Topic.ID" class="btn btn-default btn-xs" title="置顶">

Oracle中生成uuid的方法

Oracle中生成uuid的方法 下载LOFTER客户端 在Oracle SQL 提供了一个生成uuid的函数sys_guid: http://download.oracle.com/docs/cd/E11882_01/server.112/e17118/functions187.htm#i79194 http://en.wikipedia.org/wiki/Universally_unique_identifier SQL> select sys_guid() from dual ; SYS_

ASP.NET MVC 3和Razor中的@helper

ASP.NET MVC 3支持一项名为“Razor”的新视图引擎选项(除了继续支持/加强现有的.aspx视图引擎外).当编写一个视图模板时,Razor将所需的字符和击键数减少到最小,并保证一个快速.通畅的编码工作流. 与大部分模板的语法不同,在Razor的帮助下,您不需要中断代码编写,仅仅为了在HTML中标注服务器端代码块的开始和结束.代码分析器足够聪明,它能够从你的代码里推断出是否为服务器端代码.这种更加简洁.富有表现力的语法更加干净,输入也更快速,有趣. 今天的博文涵盖了Razor的一项很多

(转)ASP.NET MVC 3和Razor中的@helper 语法

转自:http://kb.cnblogs.com/page/102191/ ASP.NET MVC 3支持一项名为“Razor”的新视图引擎选项(除了继续支持/加强现有的.aspx视图引擎外).当编写一个视图模板时,Razor将所需的字符和击键数减少到最小,并保证一个快速.通畅的编码工作流. 与大部分模板的语法不同,在Razor的帮助下,您不需要中断代码编写,仅仅为了在HTML中标注服务器端代码块的开始和结束.代码分析器足够聪明,它能够从你的代码里推断出是否为服务器端代码.这种更加简洁.富有表现

ES6中字符串的新增方法梳理

1.String.fromCodePoint(); String,fromCodePoint()方法可以认为是对String.fromCharCode()方法的扩展,这两个方法的共同点在于都是用于Unicode码点返回对应字符,但是差异在于String.fromCharCode()该方法不能识别大于0xFFFF的码点,ES6中提供了String.fromCodePoint()就很好的弥补了String.fromCharCode()的不足.它可以识别码点大于0xFFFF的对应字符. 上面是在chr

schema中的虚拟属性方法

schema中的虚拟属性方法相当于vue中的计算属性,它是通过已定义的schema属性的计算\组合\拼接得到的新的值 var personSchema = new Schema({ name: { first: String, last: String } }); var Person = mongoose.model('Person', personSchema); // create a document var bad = new Person({ name: { first: 'Walt

zabbix2.2.3中乱码的解决方法

当将zabbix2.2.3中的语言改为中文后图形后显示如下 解决方法: 1.查看zabbix的字体文件 [[email protected] ~]# cd /usr/share/zabbix/fonts/[[email protected] fonts]# lsgraphfont.ttf 2.将windows系统中你想用的字体文件复制到linux系统中,然后再将字体文件复制到zabbix字体所在的目录中 [[email protected] ~]# cp STXIHEI.TTF /usr/sha

在.net中序列化读写xml方法的总结

在.net中序列化读写xml方法的总结 阅读目录 开始 最简单的使用XML的方法 类型定义与XML结构的映射 使用 XmlElement 使用 XmlAttribute 使用 InnerText 重命名节点名称 列表和数组的序列化 列表和数组的做为数据成员的序列化 类型继承与反序列化 反序列化的实战演练 反序列化的使用总结 排除不需要序列化的成员 强制指定成员的序列化顺序 自定义序列化行为 序列化去掉XML命名空间及声明头 XML的使用建议 XML是一种很常见的数据保存方式,我经常用它来保存一些

URL地址中中文乱码详解(javascript中encodeURI和decodeURI方法、java.net.URLDecoder.encode、java.net.URLDecoder.decode)

引言: 在Restful类的服务设计中,经常会碰到需要在URL地址中使用中文作为的参数的情况,这种情况下,一般都需要正确的设置和编码中文字符信息.乱码问题就此产生了,该如何解决呢?且听本文详细道来. 1.  问题的引出 在Restful的服务设计中,查询某些信息的时候,一般的URL地址设计为: get /basic/service? keyword=历史 , 之类的URL地址. 但是,在实际的开发和使用中,确是有乱码情况的发生,在后台的读取keyword信息为乱码,无法正确读取. 2. 乱码是如