zoukankan      html  css  js  c++  java
  • Razor与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="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)这样就会原封不动的输出我们想要的样子。
  • 相关阅读:
    mysql怎么导入大文件的sql文件
    php函数研究
    php实现实现代码多主从,切换,轮询,健康检查
    php实现单个用户禁止重复登录,防止同一用户同时登陆
    php使用p3p实现cookies跨域设置 实现单点登录,全站登录
    实现页面浏览统计
    遍历目录删除指定MD5值的文件
    boot.img的修改
    “逃离大厦”游戏的破解
    Android漏洞——将Android恶意代码隐藏在图片中
  • 原文地址:https://www.cnblogs.com/jinhaoObject/p/4597670.html
Copyright © 2011-2022 走看看