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. BZOJ2539: [Ctsc2000]丘比特的烦恼

    BZOJ2539: [Ctsc2000]丘比特的烦恼 Description 随着社会的不断发展,人与人之间的感情越来越功利化. 最近,爱神丘比特发现,爱情也已不再是完全纯洁的了. 这使得丘比特很是苦 ...

  2. 一起来学linux:网络配置

    上网首先需要网卡的支持.在linux中默认的网卡为eth0, 第二张网卡为eth1.如果是用的无线网卡则是wlan0.这个可以通过ifconfig查看到.结果如下.其中lo代表本地端口.root@zh ...

  3. fastjson(转)

    博客地址 :http://blog.csdn.NET/shulianghan/article/details/41011605 fastjson 源码地址 : -- GitHub : https:// ...

  4. 运用<ul><li>做导航栏

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  5. docker 网络模式研究了许久,其实我们需要的是docker run -p 80:80命令

    我们只是希望能够从外部访问到docker而已,并不需要去折腾该死的网络模式,桥接,host等等. -p: 端口映射,格式为:主机(宿主)端口:容器端口 sudo docker run -t -i  - ...

  6. PAT 天梯赛 L2-028. 秀恩爱分得快 【数据处理】

    题目链接 https://www.patest.cn/contests/gplt/L2-028 思路 0.只处理被询问的情侣的亲密度,否则会超时 1.要注意输入数字要用字符串,还要标记性别 因为 输出 ...

  7. Java多线程系列 基础篇04 线程中断

    1. 中断线程 中断可以理解为线程的一个标志位属性,它表示一个运行中的线程是否被其他线程进行了中断操作,其他线程通过调用该线程的interrupt()方法对其进行中断操作,线程通过检查自身是否被中断来 ...

  8. webpack-dev-server原理及要点笔记

    webpack-dev-server启动了一个使用express的Http服务器,这个服务器与客户端采用websocket通信协议,当原始文件发生改变,webpack-dev-server会实时编译. ...

  9. [HDU4609] 3-idiots FFT+计数

    用FFT再去重计算出两条边加起来为某个值得方案数,然后用总方案数减去不合法方案数即可. #include<iostream> #include<cstdio> #include ...

  10. DOM的构建与优化

    一.构建模块 HTML描述了一个页面的结构.浏览器会将它转换成一种他们能够理解的格式——文档对象模型(DOM),浏览器引擎有一段特殊的代码叫做解析器,将数据从一种格式转换成另外一种格式. 一个HTML ...