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

摘要:
3,Razor与HTML混合输出陷阱与技巧属性名称误判有时候我们必须让html内容与razor语句紧接在一起,eg:您好,a先生假设变量名称为ViewBag.Name,您好,@ViewBag.Name先生//这样输出就只有”您好,”,后面的Name先生被当做是viewbag的属性去了,所以如果要解决这个问题就是加个小括号便好,如“您好,先生”还有一个办法就是用一个html标签包起来,如“您好,@ViewBag.Name先生”,或者将先生用html标签包起来,都是可以的。

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="http://t.zoukankan.com/aaabbb@qq.com">aaa</超链接a>,也许有人会说@在razor里是个关键字,这里应该放两个@符号,其实不用,razor会自动判断前后文,只要@的前面和后面都有文字的话,预设这次@就会停用razor语法解析
<超链接a href="http://t.zoukankan.com/aaabbb@qq.com">aaa</超链接a>如果要将aaa的位置替换为变量
@{
ViewBag.BlogID="aaa";
}
<超链接a href="http://t.zoukankan.com/@(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混合输出陷阱与技巧》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Navicat for mysql 破解版安装标头“Vary:Accept-Encoding”指定方法[转]下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

随便看看

canvas基础绘制矩形(1)

1.画布基础知识画布元素是HTML5中添加的一个重要元素,专门用于绘制图形。然而,画布本身不具备绘制图形的能力。将画布元素放置在页面上相当于在页面上放置矩形“画布”。我们可以使用js脚本在“画布”上绘制图形。...

Vue 引入 svg文件

在图标显示中,通常使用font真棒图标库,它很简单,只需下载和导入即可。重要的显示:内联块;}2.在src目录下,添加一个名为icons的文件夹,并在icons文件夹下添加索引。js文件和svg文件夹,其中svg文件存储在svg文件夹中。...

AcWing算法基础课

第二行包含n个整数,表示整数序列。输出格式对于每个输出指令PM,输出表示当前集合中最小值的结果。每个结果占据一行。数据范围1≤ N≤ 105109≤ x(x)≤ 109是合法的。输入示例:8I-10PMI-10D1C28I6PMDM输出示例:-106分析:对于向上和向下操作,请注意ph和hp的应用,这相当于指针ph[k]=t;插入堆中的Kth的位置为t;hp...

01 . 美团全链路监控CAT简介及部署

现任携程架构总监)领导基于Java开发的实时应用程序监控平台的设计。作为大众点评网的基本监控组件,AT为大众点评网业务线提供系统的性能指标、健康状态、基本警报等。如何有效定位故障并缩短故障。。。监控是运维工作中最重要的环节,吴启民也是开源实时监控系统CAT的作者。系统故障监控、业务指标监控、应用程序性能监控、用户行为监控、安全合规性监控等,如分布式监控系统C...

MarkDown技巧:两种方式实现页内跳转

MarkDown技术:有两种方法可以跳转到页面上的电子邮件地址:JohnTsai.Work@gmail.com,欢迎交流讨论。我喜欢MarkDown简单直观的写作风格。...

WebSocket 详解教程

WebSocket是一种网络通信协议。由于WebSockets连接存在很长时间,它与典型的HTTP连接不同,对服务器有重要影响。WebSocket事件以下是WebSocket对象的相关事件。其中,Tomcat 7、Jetty 7及以上版本开始支持WebSocket。此外,Spring框架还提供对WebSocket的支持。尽管如此,上述应用程序有自己的WebS...