3,Razor与HTML混合输出陷阱与技巧

属性名称误判
有时候我们必须让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)这样就会原封不动的输出我们想要的样子。

转载于:https://www.cnblogs.com/jinhaoObject/p/4597670.html

Razor与HTML混合输出陷阱与技巧相关推荐

  1. Go的50坑:新Golang开发者要注意的陷阱、技巧和常见错误[2]

    Go的50坑:新Golang开发者要注意的陷阱.技巧和常见错误[2] 初级篇 开大括号不能放在单独的一行 未使用的变量 未使用的Imports 简式的变量声明仅可以在函数内部使用 使用简式声明重复声明 ...

  2. 12864液晶驱动源码,独创中英文混合输出

    12864液晶驱动源码,独创中英文混合输出 51单片机学习笔记:ST7920控制器的12864液晶使用总结 转载于:https://www.cnblogs.com/LittleTiger/p/4724 ...

  3. Go的50坑:新Golang开发者要注意的陷阱、技巧和常见错误[1]

    Go的50坑:新Golang开发者要注意的陷阱.技巧和常见错误[1] 初级篇 开大括号不能放在单独的一行 未使用的变量 未使用的Imports 简式的变量声明仅可以在函数内部使用 使用简式声明重复声明 ...

  4. linux之awk命令格式化输出(printf)使用技巧

    linux之awk命令格式化输出(printf)使用技巧 在使用awk命令的过程中输出的每一列总是对不齐,看着很乱,如下: [root@linuxforliuhj ~]# awk -F ": ...

  5. c++ 自己遇到的编程陷阱或技巧

    ​ 技巧 1.获得类中属性的引用 (比如kaldi中的matrix,重载了(),返回值是个引用,就可以实现 ()= 的效果了) int &Cls::cite(){return b; //b i ...

  6. c语言编译时检查逻辑错误吗,C语言陷阱与技巧20节,自定义“编译时”assert方法,在代码编译阶段检查“逻辑”错误...

    在C语言程序开发中,程序员写代码时应该考虑的"面面俱到",这样才能写出功能稳定的程序.例如,在实现 open() 函数时,先完成它的功能固然是重要的,但是程序员还需要考虑各种&qu ...

  7. [转载][翻译]Go的50坑:新Golang开发者要注意的陷阱、技巧和常见错误[1]

    Golang作为一个略古怪而新的语言,有自己一套特色和哲学.从其他语言转来的开发者在刚接触到的时候往往大吃苦头,我也不例外.这篇文章很细致地介绍了Golang的一些常见坑点,读完全篇中枪好多次.故将其 ...

  8. python 关于中英文混合输出的那点事

    python里面的len 对于汉字和非汉字都视为1个字符,然而输出的时候中文占的是2个非中文的宽度,使得一些输出无法对齐. 网上有些资料说使用空格填充的时候可以使用中文的空格,也就是 chr(1228 ...

  9. R语言-Kindle特价书爬榜示例 输出HTML小技巧

    20170209更新: 根据回复提示,rvest包更新,原用函数html作废,需改用read_html 并后续amazon网页改版等 因此此文章代码失效!各位可看评论内容了解详情 等以后有空再重写一遍 ...

最新文章

  1. 学好Linux必备知识
  2. RHEL5 Silent方式安装Oracle 11gR2指南
  3. java大文件 索引_JAVA 大文件上传解决方案(500M以上)
  4. 使用Java api 和 jni混合方式调用OpenCV
  5. java classloader_Java Classloader原理分析
  6. 装箱---一个工厂制造的产品形状都是长方体,它们的高度都是 h,长和宽都相等,一共有六个型号,他们的长宽分别为 1*1, 2*2, 3*3, 4*4, 5*5, 6*6.
  7. 算法导论学习笔记 第7章 快速排序
  8. Android之添加固定图标到桌面
  9. 用python计算ln函数_python-含参函数
  10. 最新版Spring Cloud Alibaba微服务架构-Config配置中心篇
  11. 2017.3.4 wyd测试
  12. 有函数就可以实现面向对象
  13. menu什么意思中文意思_pipeline什么意思
  14. TOP计划猿10最佳实践文章
  15. user.php act profile,user.php
  16. 【Web前端】儿童摄影网——网页制作代码
  17. c语言题库-礼炮声响次数,c语言题库与答案精华版资料.doc
  18. 如何提高项目管理效率
  19. Android OTA在线升级一(架构分析)【转】
  20. 程序人生,心态变化!

热门文章

  1. Java中List Set Map 是否有序等总结
  2. linux安装nagios客户端
  3. 黑马程序员—————— 多线程
  4. ant引入html页面,antdesign 中 使用 iconfont symbol方式引入图标不展示
  5. Linux系统编程学习问题回顾
  6. 树莓派Linux内核源码配置、编译、挂载(boot/kernal/根文件)、开启新内核
  7. 看风水用什么罗盘最好_兰花用什么花盆栽植最好?
  8. python pyqt eric_科学网—PyQt及Eric的安装 - 张鲁新的博文
  9. mysql使用 BETWEEN AND 查询
  10. 计算机网络:网络设备知识笔记