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)这样就会原封不动的输出我们想要的样子。

Razor与HTML混合输出陷阱与技巧的更多相关文章

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

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

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

    初级篇 开大括号不能放在单独的一行 未使用的变量 未使用的Imports 简式的变量声明仅可以在函数内部使用 使用简式声明重复声明变量 偶然的变量隐藏Accidental Variable Shado ...

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

    from : https://levy.at/blog/11 进阶篇 关闭HTTP的响应 level: intermediate 当你使用标准http库发起请求时,你得到一个http的响应变量.如果你 ...

  4. python学习之解决中英文混合输出的排版问题

    在python的格式输出时常使用format()方法,其中的多余空间默认使用英文空格作为占位符,不方便中英混合时的格式输出,因此我们要为其中的中文字符串使用占字符较大的中文空格符作为多余空间的占位符. ...

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

    博客总目录:http://www.cnblogs.com/weibaar/p/4507801.html ---- 自从买了kindle以后,总是想要定期刷有没有便宜的书,amazon经常有些1元/2元 ...

  6. R语言-Kindle特价书爬榜示例 & 输出HTML小技巧(转)

    自从买了kindle以后,总是想要定期刷有没有便宜的书,amazon经常有些1元/2元的书打特价,但是每次都去刷那些榜单太麻烦了,而且榜单又不能按照价格排名,捞书有点累 所以自己用R语言的rvest包 ...

  7. Linux命令输出头(标题)、输出结果排序技巧

    原文:http://blog.csdn.net/hongweigg/article/details/65446007 ----------------------------------------- ...

  8. 知识点2-5:了解Razor语法

    以往开发ASP.NET Web Form时,在ASPX页面上都会出现许多夹杂C#/VB.NET与HTML的情况,而先前使用<%...%>这种传统圆角括号的表示法会让HTML标签与ASP.N ...

  9. 5.3 Razor语法基础

    以往开发ASP.NET Web Form时,在ASPX页面上都会出现许多夹杂C#/VB.NET与HTML的情况,而先前使用<%...%>这种传统圆角括号的表示法会让HTML标签与ASP.N ...

随机推荐

  1. varnish代理缓存服务器的安装与使用

    1. 下载解压 cd /usr/local/src/ wget https://codeload.github.com/varnishcache/varnish-cache/zip/master ch ...

  2. 性能测试--初识Jmeter

    初识Jmeter Apache JMeter是Apache组织开发的基于Java的压力测试工具.用于对软件做压力测试,它最初被设计用于Web应用测试,但后来扩展到其他测试领域. 它可以用于测试静态和动 ...

  3. 【题解】P1407国家集训队稳定婚姻

    [题解][P1407 国家集训队]稳定婚姻 很好的一道建模+图论题. 婚姻关系?很像二分图匹配呀,不过不管怎么办先建模再说.婚姻关系显然用图方面的知识解决.建图! 它给定的是字符串,所以我们使用\(a ...

  4. cordova 实现拨打电话-只需两步(H5)

    cordova 实现拨打电话: 第一步配置conf.xml在cordova中所有的URL Schemes 都是服从于白名单的,所以a tel 在这无法正常使用.解决方法是在项目config.xml中添 ...

  5. oracle-jforum论坛链接Oracle

    问题描述 jforum论坛链接Oracle jforum论坛链接Oracle数据库 论坛主题页面不显示 是权限引起的吗 解决方案 页面不显示,你需要看一下错误,估计是配置不对引起的 参考一下这个 jf ...

  6. 同源策略 , CORS

    一 . 同源策略 同源策略( Same origin policy ) 是一种约定,它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,则浏览器的正常功能可能都会受到影响,可以说Web是构建在同源 ...

  7. 前端基础之---css

    css  介绍 css 规则有两个主要的部分构成 : 选择器  , 以及一条或多条声明. 现在的互联网前端分为三层 : ● HTML :超文本标签机语言,从语义的角度描述页面结构. ● CSS : 层 ...

  8. ES6中promise总结

    一.什么是ES6的Promise 讲太多也没有.直接在打印出来就好,console.dir(Promise) Promise 是一个构造函数,自身有all, reject, resolve 这几个眼熟 ...

  9. ubuntu mysql 配置(远程访问&&字符集设置&&忽略大小写)

    1.安装 参考http://www.cnblogs.com/wuhou/archive/2008/09/28/1301071.html sudo apt-get install mysql-serve ...

  10. HDU 3853 LOOPS:期望dp【网格型】

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3853 题意: 有一个n*m的网格. 给出在每个格子时:留在原地.向右走一格,向下走一格的概率. 每走一 ...