002_Razor简介
关于 Razor:
Razor 语句以 @ 字符开始。在使用 Razor 声明视图模型对象的类型时要使用小写字母,如在本例文件 Index.cshtml 文件中 @model 以小写的 m 开头,但要注意,在
访问被声明的视图模型对象的类型时要以大写字母的形式开头,如 @Model.Name 的形式(以大写的 M 开头,“ Name ”为被声明的视图模型对象的类型:Product 中的一
个属性)。
Razor 代码块的书写方式是以 @{开始,以 } 结束的表达形式,在该代码块中可以允许用户填写 C# 代码语句。
如本例文件 Index.cshtml 文件中的:
@{
//将 Layout 设置成 null 则说明该视图是自包含的,并且会渲染返回给客户端所需要的所有内容。
Layout = null;
}
布局
布局:布局是特殊形式的视图。它是对试图进行支持的文件,在 Views 文件夹中以下划线“_”开头的形式命名,这也可以表明该文件是不会被渲染的视图文件。布局中的
任何元素都会被运用于使用此布局的任何视图,因此,布局是基本模板。
但这会有一个问题,就是我们需要为在每一个要使用该布局的视图中进行指定。这就会在我们需要重命名布局文件的时候去查找所有引用该布局的每一个视图并进行修改。
要想解决这个问题,我们可以使用视图起始文件。在使用视图起始文件的时候无需以任何方式指定要使用的视图起始文件。如果,我们不想使用视图起始文件中的定义,
可以直接在视图文件中进行其自身的定义,而且,这一定义将拥有更改的优先级(这使得视图中的定义会覆盖视图起始文件中的定义)。
使用 Razor 表达式设置元素标签属性值
我们可以通过 Razor 表达式来设置元素标签的属性的值。下面举例自定义标签和checkbox 的 checked 标签属性:
1、 自定义标签属性(以 data 为例):
data 标签属性的一般其形式为:data-为前缀,在自定义标签属性中,这是一种普遍的非正规的方式,但现在已经成为 HTML5 正规标准的一部分。
一般代码形式为:data-***="@###" ,其中 *** 可以是其他自定义内容,这里使用视图包给出简单示例,如:data-discount="@ViewBag.ApplyDiscount"。
Razor 在渲染时,对于True或False 这样的布尔值会对应的转换为布尔型的视图包值,儿值为 null 的属性,则会被渲染成空字符串。如 HomeController 中 DemoExpression 方法的ViewBag.ExpressShip = true、ViewBag.ApplyDiscount
= false和ViewBag.Supplier = null 分别会被渲染成 data-discount="False"、data-express="True"和data-supplier=""(HTML 的源码中可以看到,其在视图代码中的形式如: DemoExpression.cshtml 中的 data-discount="@ViewBag.ApplyDiscount" data-express="@ViewBag.ExpressShip" data-supplier="@ViewBag.Supplier")。
2、 控件的标签属性(以 checkbox 的 checked 标签属性为例):
<input type="checkbox" checked="@***" />
在这个例子中,Razor 会自动的识别 False、null或空字符串,并不对其进行渲染,如在视图代码中的形式:
Discount:<input type="checkbox" checked="@ViewBag.ApplyDiscount" />
Express:<input type="checkbox" checked="@ViewBag.ExpressShip" />
Supplier:<input type="checkbox" checked="@ViewBag.Supplier" />
将会被转换为 HTML 源码中下面的形式:
Discount:<input type="checkbox" />
Express:<input type="checkbox" checked="checked" />
Supplier:<input type="checkbox" />
使用条件语句
可以通过在 C# 的条件关键字前使用 @ 字符来开始一个条件语句,这样就可以使用标准的 C# 代码表达要实现的条件逻辑。
在 Razor 代码块的内部只要通过定义 HTML 以及 Razor 表达式,就可以将 HTML 元素和数据值插入大视图输出,而不需要将元素或表达式放在引号内或以特殊的方式来表示。(如:<b>Low Stock (@ViewBag.ProductCount)</b>、@ViewBag.ProductCount)但是,如果想将为包含在 HTML 元素中的文字文本插入到视图,则需要使用 Razor 的一个辅助工具,并以它作为该行的前缀(如:@:Out of Stock)。
@:字符会阻止 Razor 将此行解释为一条 C# 语句。
条件语句除了视图 DemoExpression.cshtml 中演示的switch 形式,还可以使用 if 语句实现同样的效果,具体可参考该视图文件中的书写。
002_Razor简介的更多相关文章
- ASP.NET Core 1.1 简介
ASP.NET Core 1.1 于2016年11月16日发布.这个版本包括许多伟大的新功能以及许多错误修复和一般的增强.这个版本包含了多个新的中间件组件.针对Windows的WebListener服 ...
- MVVM模式和在WPF中的实现(一)MVVM模式简介
MVVM模式解析和在WPF中的实现(一) MVVM模式简介 系列目录: MVVM模式解析和在WPF中的实现(一)MVVM模式简介 MVVM模式解析和在WPF中的实现(二)数据绑定 MVVM模式解析和在 ...
- Cassandra简介
在前面的一篇文章<图形数据库Neo4J简介>中,我们介绍了一种非常流行的图形数据库Neo4J的使用方法.而在本文中,我们将对另外一种类型的NoSQL数据库——Cassandra进行简单地介 ...
- REST简介
一说到REST,我想大家的第一反应就是“啊,就是那种前后台通信方式.”但是在要求详细讲述它所提出的各个约束,以及如何开始搭建REST服务时,却很少有人能够清晰地说出它到底是什么,需要遵守什么样的准则. ...
- Microservice架构模式简介
在2014年,Sam Newman,Martin Fowler在ThoughtWorks的一位同事,出版了一本新书<Building Microservices>.该书描述了如何按照Mic ...
- const,static,extern 简介
const,static,extern 简介 一.const与宏的区别: const简介:之前常用的字符串常量,一般是抽成宏,但是苹果不推荐我们抽成宏,推荐我们使用const常量. 执行时刻:宏是预编 ...
- HTTPS简介
一.简单总结 1.HTTPS概念总结 HTTPS 就是对HTTP进行了TLS或SSL加密. 应用层的HTTP协议通过传输层的TCP协议来传输,HTTPS 在 HTTP和 TCP中间加了一层TLS/SS ...
- 【Machine Learning】机器学习及其基础概念简介
机器学习及其基础概念简介 作者:白宁超 2016年12月23日21:24:51 摘要:随着机器学习和深度学习的热潮,各种图书层出不穷.然而多数是基础理论知识介绍,缺乏实现的深入理解.本系列文章是作者结 ...
- Cesium简介以及离线部署运行
Cesium简介 cesium是国外一个基于JavaScript编写的使用WebGL的地图引擎,一款开源3DGIS的js库.cesium支持3D,2D,2.5D形式的地图展示,可以自行绘制图形,高亮区 ...
随机推荐
- 【转帖】ECLIPSE-JEE-LUNA-SR2官方汉化教程
ECLIPSE-JEE-LUNA-SR2官方汉化教程 工具/原料 Eclipse-jee-luna-SR2 步骤/方法 1.在浏览器输入网址http://www.eclipse.org/babel/d ...
- “合规性”是考核IT运维的重要指标
ITSM的绩效考核向来是一个令人头疼的问题,有时就像一团乱麻,既无章可循,又无从下手.其实,只要掌握正确的思想方法,就能拨云见日.“斩乱麻”需“快刀”,“合规性考核”就是斩ITSM绩效考核这团乱麻的快 ...
- Hadoop - Zeppelin 使用心得
1.概述 在编写 Flink,Spark,Hive 等相关作业时,要是能快速的将我们所编写的作业能可视化在我们面前,是件让人兴奋的时,如果能带上趋势功能就更好了.今天,给大家介绍这么一款工具.它就能满 ...
- (笔记)Linux内核学习(九)之内核内存管理方式
一 页 内核把物理页作为内存管理的基本单位:内存管理单元(MMU)把虚拟地址转换为物理 地址,通常以页为单位进行处理.MMU以页大小为单位来管理系统中的也表. 32位系统:页大小4KB 64位系统:页 ...
- [转]Sql Server 给表与字段添加描述
/* 在SQL语句中通过系统存储过sp_addextendedproperty可为表字段添加上动态的说明(备注)下面是SQL SERVER帮助文档中对sp_addextendedproperty存储过 ...
- linux下备份mysql命令
一,数据库的备份与导入 1),数据库的备份 1.导出整个数据库mysqldump -u 用户名 -p 数据库名 > 导出的文件名例:mysqldump -u dbadmin -p myblog ...
- __get,__set
__get,__set 为php的magic方法,在类中定义为 public 类型. class UserModel { private $id; public $name; public funct ...
- ZOJ 2753 Min Cut (Destroy Trade Net)(无向图全局最小割)
题目大意 给一个无向图,包含 N 个点和 M 条边,问最少删掉多少条边使得图分为不连通的两个部分,图中有重边 数据范围:2<=N<=500, 0<=M<=N*(N-1)/2 做 ...
- 用 Python 和 OpenCV 检测图片上的条形码
用 Python 和 OpenCV 检测图片上的的条形码 这篇博文的目的是应用计算机视觉和图像处理技术,展示一个条形码检测的基本实现.我所实现的算法本质上基于StackOverflow 上的这个问 ...
- 关于castle和Could not find the dialect in the configuration错误
最近试了试castle,NND,老是报“Could not find the dialect in the configuration”,明明配的没问题,上网搜索所有教程都是这么配的.后来在一国外的网 ...