标签:
HtmlEncodeString和Raw的使用
1,RazorTest类:
);
}
2,在cshtml文件调用这两个方法
@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,结果
例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>
然而,我要改变!
如果不想被htmlEncode,就要将Model.Name原样输出呢?
RawString类:顾名思义可以将原始字符串,也就是说会将输入的代码,原样输出到HTML中。
可以自己封装一个返回值为RawString类型的方法,把Name传进来,返回一个RawString对象即可。
例3:
封装一个返回值为RawString类型的方法HtmlToRaw
RawString(html);
}
1,ashx.cs代码:
2,cshtml代码:
@RazorTest.HtmlToRaw(Model.Html)
</body>3,结果
上面我们知道了,
HtmlEncodeString可以将字符串转换为HTML编码(如:< 转换为 <)
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>
结果:
不过,调用RawString类的ToEncodedString方法来htmlEncode有点麻烦,还是直接使用HhtmlEncodeString类来htmlEncode方便。
标签:
原文地址:http://www.cnblogs.com/sean100/p/4573659.html