当前位置: 首页 > news >正文

MVC5_Day1(Razor视图引擎)

MVC提供了两种不同的视图引擎:Razor视图引擎、Web Forms视图引擎。

1.代码表达式

1.1 转换字符:核心转换字符@,用作标记<=>代码之间相互转换的字符。

1.2 两种基本转换:代码表达式、代码块。都是求出值,再写入响应中。

<hl>@items.Length</hl>
----------------------
@{ string test="MyAPP";}
<span>@(test).Models</span>
=><span>MyApp.Models</span>

 

2.HTML编码

视图显示用户的输入等信息,存在XSS(跨站脚本注入攻击)。

2.1 Razor表达式使用HTML自动编码。

@{string message="<script> alert('hello');</script>
}

弹出一个警告框。

2.2 不进行HTML编码

@{string message="<strong>This is a bold"</strong>
}
<span>@Html.Raw(message)</span>

显示结果:

<span><strong>This is bold</strong><span>

js中使用@Ajax.JavaScciptStringEncode方法对用户输入进行编码,可以有效避免XSS攻击

<script type="texxt/javascript">$(function(){var message='Hello @Ajax.JavaScriptStringEncode(ViewBag.UserName)';$("#message").html(message).show('slow');
});

理解HTML和JavaScript编码的安全隐患很重要。

3.Razor语法示例

3.1 隐式代码表达式

代码表达式被计算,再将值写入响应。隐式代码表达式总是采用HTML编码。

<span>@model.Message</span>

3.2 显示代码表达式

<span>1+2=@(1+2)</sapn>

3.3 无编码代码表达式

不需要采用HTML编码的值,可以使用HTML.Raw方法保证值不被编码。

<sapn>@Html.Raw(model.Message)</span)

3.4 代码块

@{int x=124;string y="abc";
}

3.5 文本和标记相结合

@foreach(var item in items)
{<span>Item @item.Name.</span>
}

3.6 混合代码和纯文本

@if(showMessage)
{<text>This is plain text</text>
}

<text>标签只是把标签内容写入到响应,标签本身不写入。

3.7 转移代码分割符

使用@@编码@

3.8 服务器端的注释

@*

XXXXX

*@

3.9 调用泛型方法

@(Html.SomeMethod<AType>())

http://www.lryc.cn/news/216882.html

相关文章:

  • 超全整理,Jmeter性能测试-脚本error报错排查/分布式压测(详全)
  • vscode开启emmet语法
  • 07、vue : 无法加载文件 C:\Users\JH\AppData\Roaming\npm\vue.ps1,因为在此系统上禁止运行脚本。
  • 利用移动互联、物联网、智能算法、地理信息系统、大数据分析等信息技术开发的智慧工地云平台源码
  • 海康多相机同步取流保存图片
  • win10 + vs2017 + cmake3.17编译OSG-3.4.1
  • Excel VBA开发基本语句说明
  • 应用在智能空调中的数字温度传感芯片
  • Qt界面美化之Qt Style Sheets
  • prometheus监控告警部署(k8s内部)
  • 数字孪生特高压电网三维可视化平台实现能源智能管理
  • 12.JavaScript(WebAPI) - JS api文献精解
  • 亚马逊云科技:让生成式AI真正走向普惠
  • Java web(四):JSP
  • HarmonyOS(二)—— 初识ArkTS开发语言(中)之ArkTS的由来和演进
  • 电子产品上架Temu平台需要做什么认证?UL测试报告
  • 热点报告 | 健身人群抵抗入冬肥,Dirtyfit引领23秋冬潮流?
  • C++变参模板的使用
  • 【二、http】go的http基本请求设置(设置查询参数、定制请求头)get和post类似
  • [学习笔记]python绘制图中图(绘制站点分布图)
  • 回归预测 | Matlab实现POA-CNN-SVM鹈鹕算法优化卷积神经网络-支持向量机多变量回归预测
  • React 学习笔记
  • 单链表的查找(按值查找、按位查找)(数据结构与算法)
  • Qt 6.6 发布
  • unity工程
  • 蓝桥杯官网练习题(地址转换)
  • 力扣labuladong——一刷day19
  • MyBatis无法读取XML中的Method的乌龙事件
  • LeetCode----76. 最小覆盖子串
  • app逆向入门之车智赢