Razor HTML Html.Raw() 混合输出陷阱与技巧
来源:互联网 发布:盘锦兼职淘宝客服招聘 编辑:程序博客网 时间:2024/06/05 15:48
属性名称误判
有时候我们必须让html内容与razor语句紧接在一起,
eg: 您好,a先生
假设变量名称为ViewBag.Name,
您好,@ViewBag.Name 先生 //这样输出就只有”您好,”,后面的Name 先生被当做是viewbag的属性去了,所以如果要解决这个问题就是加个小括号便好,如 “您好,(@ViewBag.Name )先生”
还有一个办法就是用一个html标签包起来,如“您好,<标签>@ViewBag.Name</标签>先生”,或者将先生用html标签包起来,都是可以的。
未预期的额外属性
如果想要输出一个c#的命名空间,而输出的部分北荣要变成razor变量,类别是System.Web.Mvc.Controller
eg:
类别是@ViewBag.MvcNameSpace.Controller
结果输出会引发错误,string未包含controller的定义,原因在于razor解析@ViewBag.MvcNameSpace时把Controller这段当做是@ViewBag.MvcNameSpace的一个Controller属性,因此解析错误,遇到这种情况解决办法也是加个小括号,eg: @(ViewBag.MvcNameSpace).Controller,就会输出“System.Web.Mvc”
输出Email地址与@跳脱子元
<超链接a href="aaabbb@qq.com">aaa</超链接a>,也许有人会说@在razor里是个关键字,这里应该放两个@符号,其实不用,razor会自动判断前后文,只要@的前面和后面都有文字的话,预设这次@就会停用razor语法解析
<超链接a href="aaabbb@qq.com">aaa</超链接a>如果要将aaa的位置替换为变量
<超链接a href="@(ViewBag.BlogID)bbb@qq.com">aaa</超链接a>,也只要加个小括号就可以,
输出未经htmlEncode的字串
预设使用razor语法输出变量,所有内容预设都会被HTML编码为HtmlEncode,这是为了保护网页不致遭受跨网站脚本攻击,有了这个预设值,能确保新手写出不安全代码
eg:
@{
ViewBag.Description="<标签 style='font-size:12px;'>描述文字</标签>";
}
@ViewBag.Description
最后输出的结果中会是htmlencode过的版本:大于号小于号双引号都变成了&加一些字母的形式,解决办法就是利用@Html.Raw辅助方法帮助我们输出内容 @Html.Raw(ViewBag.Description)这样就会原封不动的输出我们想要的样子。
有时候我们必须让html内容与razor语句紧接在一起,
eg: 您好,a先生
假设变量名称为ViewBag.Name,
您好,@ViewBag.Name 先生 //这样输出就只有”您好,”,后面的Name 先生被当做是viewbag的属性去了,所以如果要解决这个问题就是加个小括号便好,如 “您好,(@ViewBag.Name )先生”
还有一个办法就是用一个html标签包起来,如“您好,<标签>@ViewBag.Name</标签>先生”,或者将先生用html标签包起来,都是可以的。
未预期的额外属性
如果想要输出一个c#的命名空间,而输出的部分北荣要变成razor变量,类别是System.Web.Mvc.Controller
eg:
@{ ViewBag.MvcNameSpace="System.Web.Mvc";}
类别是@ViewBag.MvcNameSpace.Controller
结果输出会引发错误,string未包含controller的定义,原因在于razor解析@ViewBag.MvcNameSpace时把Controller这段当做是@ViewBag.MvcNameSpace的一个Controller属性,因此解析错误,遇到这种情况解决办法也是加个小括号,eg: @(ViewBag.MvcNameSpace).Controller,就会输出“System.Web.Mvc”
输出Email地址与@跳脱子元
<超链接a href="aaabbb@qq.com">aaa</超链接a>,也许有人会说@在razor里是个关键字,这里应该放两个@符号,其实不用,razor会自动判断前后文,只要@的前面和后面都有文字的话,预设这次@就会停用razor语法解析
<超链接a href="aaabbb@qq.com">aaa</超链接a>如果要将aaa的位置替换为变量
@{ ViewBag.BlogID="aaa";}
<超链接a href="@(ViewBag.BlogID)bbb@qq.com">aaa</超链接a>,也只要加个小括号就可以,
输出未经htmlEncode的字串
预设使用razor语法输出变量,所有内容预设都会被HTML编码为HtmlEncode,这是为了保护网页不致遭受跨网站脚本攻击,有了这个预设值,能确保新手写出不安全代码
eg:
@{
ViewBag.Description="<标签 style='font-size:12px;'>描述文字</标签>";
}
@ViewBag.Description
最后输出的结果中会是htmlencode过的版本:大于号小于号双引号都变成了&加一些字母的形式,解决办法就是利用@Html.Raw辅助方法帮助我们输出内容 @Html.Raw(ViewBag.Description)这样就会原封不动的输出我们想要的样子。
阅读全文
0 0
- Razor HTML Html.Raw() 混合输出陷阱与技巧
- mvc razor模式 输出html
- jquery.tmpl.js 字符串不转码,像Razor里面的@html.Raw()一样输出
- @Html.Raw()
- ASP.NET MVC Razor 输出没有编码的HTML字符串
- Razor html标签
- MVC @Html.Raw()释意与用法
- php与html的混合写法
- android与HTML混合开发总结
- MVC 4.0 Razor模板引擎 @Html.RenderPartial 与 @Html.RenderAction 区别
- Html与CSS布局技巧
- Html与CSS布局技巧
- 输出HTML
- 微信公众号与HTML 5混合模式揭秘5——JSSDK开发技巧1
- [html]HTML技巧汇总
- 【HTML】html 小技巧
- php、js、html混合
- 【HTML&CSS】混合布局
- C++ 查找算法-有序集合
- thinkphp3.2源码 ----- 自动加载
- Oracle知识总结之——常用字符串函数
- [bigdata-087] ubuntu 16.04+linux+go 安装 编译 开发 beego+fasthttp web框架
- laravel excel循环导出
- Razor HTML Html.Raw() 混合输出陷阱与技巧
- 没有长远的职业规划的教训
- python抓取网页的注意事项
- Java编程常见问题总结
- LeetCode 8. String to Integer (atoi)
- 《Java多线程
- 26 WebGL的透视投影矩阵
- 最新spring官网下载开发web项目所需lib文件
- spring AbstractRoutingDataSource详解