MVC5_Day1(Razor视图引擎)

2023-11-03 21:52
文章标签 引擎 视图 day1 razor mvc5

本文主要是介绍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>())

这篇关于MVC5_Day1(Razor视图引擎)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/341120

相关文章

MySQL之InnoDB存储引擎中的索引用法及说明

《MySQL之InnoDB存储引擎中的索引用法及说明》:本文主要介绍MySQL之InnoDB存储引擎中的索引用法及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录1、背景2、准备3、正篇【1】存储用户记录的数据页【2】存储目录项记录的数据页【3】聚簇索引【4】二

SpringBoot集成LiteFlow工作流引擎的完整指南

《SpringBoot集成LiteFlow工作流引擎的完整指南》LiteFlow作为一款国产轻量级规则引擎/流程引擎,以其零学习成本、高可扩展性和极致性能成为微服务架构下的理想选择,本文将详细讲解Sp... 目录一、LiteFlow核心优势二、SpringBoot集成实战三、高级特性应用1. 异步并行执行2

LiteFlow轻量级工作流引擎使用示例详解

《LiteFlow轻量级工作流引擎使用示例详解》:本文主要介绍LiteFlow是一个灵活、简洁且轻量的工作流引擎,适合用于中小型项目和微服务架构中的流程编排,本文给大家介绍LiteFlow轻量级工... 目录1. LiteFlow 主要特点2. 工作流定义方式3. LiteFlow 流程示例4. LiteF

SpringBoot集成LiteFlow实现轻量级工作流引擎的详细过程

《SpringBoot集成LiteFlow实现轻量级工作流引擎的详细过程》LiteFlow是一款专注于逻辑驱动流程编排的轻量级框架,它以组件化方式快速构建和执行业务流程,有效解耦复杂业务逻辑,下面给大... 目录一、基础概念1.1 组件(Component)1.2 规则(Rule)1.3 上下文(Conte

Python基于微信OCR引擎实现高效图片文字识别

《Python基于微信OCR引擎实现高效图片文字识别》这篇文章主要为大家详细介绍了一款基于微信OCR引擎的图片文字识别桌面应用开发全过程,可以实现从图片拖拽识别到文字提取,感兴趣的小伙伴可以跟随小编一... 目录一、项目概述1.1 开发背景1.2 技术选型1.3 核心优势二、功能详解2.1 核心功能模块2.

MySQL 存储引擎 MyISAM详解(最新推荐)

《MySQL存储引擎MyISAM详解(最新推荐)》使用MyISAM存储引擎的表占用空间很小,但是由于使用表级锁定,所以限制了读/写操作的性能,通常用于中小型的Web应用和数据仓库配置中的只读或主要... 目录mysql 5.5 之前默认的存储引擎️‍一、MyISAM 存储引擎的特性️‍二、MyISAM 的主

Spring MVC使用视图解析的问题解读

《SpringMVC使用视图解析的问题解读》:本文主要介绍SpringMVC使用视图解析的问题解读,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Spring MVC使用视图解析1. 会使用视图解析的情况2. 不会使用视图解析的情况总结Spring MVC使用视图

MySQL常见的存储引擎和区别说明

《MySQL常见的存储引擎和区别说明》MySQL支持多种存储引擎,如InnoDB、MyISAM、MEMORY、Archive、CSV和Blackhole,每种引擎有其特点和适用场景,选择存储引擎时需根... 目录mysql常见的存储引擎和区别说明1. InnoDB2. MyISAM3. MEMORY4. A

MySQL InnoDB引擎ibdata文件损坏/删除后使用frm和ibd文件恢复数据

《MySQLInnoDB引擎ibdata文件损坏/删除后使用frm和ibd文件恢复数据》mysql的ibdata文件被误删、被恶意修改,没有从库和备份数据的情况下的数据恢复,不能保证数据库所有表数据... 参考:mysql Innodb表空间卸载、迁移、装载的使用方法注意!此方法只适用于innodb_fi

Python基于火山引擎豆包大模型搭建QQ机器人详细教程(2024年最新)

《Python基于火山引擎豆包大模型搭建QQ机器人详细教程(2024年最新)》:本文主要介绍Python基于火山引擎豆包大模型搭建QQ机器人详细的相关资料,包括开通模型、配置APIKEY鉴权和SD... 目录豆包大模型概述开通模型付费安装 SDK 环境配置 API KEY 鉴权Ark 模型接口Prompt