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形式的地图展示,可以自行绘制图形,高亮区 ...
 
随机推荐
- Solved: Qt Library LNK 2001 staticMetaObject error
			
在链接Qt的库,比如QtGui4.lib,我这里是在链接QtSolutions_PropertyBrowser-head.lib的时候出现的链接错误.大概是说一个"XXXX::s ...
 - R语言之词云:wordcloud&wordcloud2安装及参数说明
			
一.wordcloud安装说明 install.packages("wordcloud"); 二.wordcloud2安装说明 install.packages("dev ...
 - 获取发布版SHA1获取
 - kwm备忘
			
brew install homebrew/binary/kwm ==> Tapping homebrew/binary Cloning into '/usr/local/Library/Tap ...
 - 【汇总】iOS开发及Xcode使用中遇到的一些报错问题汇总
			
这里整合下在开发过程中遇到过的一些报错问题和解决办法:(今天开始逐渐增加) Xcode编译错误集锦:http://www.cnblogs.com/ios-wmm/p/3402261.html ...
 - jQuery UI--jquery-autohide解读
			
// jQuery Autohide v1.0.2 // (c) 2014 Alex Taujenis // MIT License (function($) { return $.fn.autohi ...
 - hibernate下载包中配置文件路径
			
路径:hibernate-release-5.0.2.Final\project\hibernate-ehcache\src\test\resources\hibernate-config 文件:hi ...
 - Fabric自动部署太方便了
			
之前不知道有Fabric工具,每次发布程序到服务器上的时候,基本流程:本地打包程序 -> Ftp上传 -> 停服务器Apache -> 覆盖文件 -> 启动Apache, 非常 ...
 - (转)Unity3D研究院之异步加载游戏场景与异步加载游戏资源进度条(三十一)
			
异步任务相信大家应该不会陌生,那么本章内容MOMO将带领大家学习Unity中的一些异步任务.在同步加载游戏场景的时候通常会使用方法 Application.LoadLevel(“yourScene ...
 - 在ubuntu下配置apache运行python脚本
			
2008-12-05 常用的简单命令 sudo apt-get remove --purge apache apache2 (彻底删除) sudo /etc/init.d/apache2 r ...