关于 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简介的更多相关文章

  1. ASP.NET Core 1.1 简介

    ASP.NET Core 1.1 于2016年11月16日发布.这个版本包括许多伟大的新功能以及许多错误修复和一般的增强.这个版本包含了多个新的中间件组件.针对Windows的WebListener服 ...

  2. MVVM模式和在WPF中的实现(一)MVVM模式简介

    MVVM模式解析和在WPF中的实现(一) MVVM模式简介 系列目录: MVVM模式解析和在WPF中的实现(一)MVVM模式简介 MVVM模式解析和在WPF中的实现(二)数据绑定 MVVM模式解析和在 ...

  3. Cassandra简介

    在前面的一篇文章<图形数据库Neo4J简介>中,我们介绍了一种非常流行的图形数据库Neo4J的使用方法.而在本文中,我们将对另外一种类型的NoSQL数据库——Cassandra进行简单地介 ...

  4. REST简介

    一说到REST,我想大家的第一反应就是“啊,就是那种前后台通信方式.”但是在要求详细讲述它所提出的各个约束,以及如何开始搭建REST服务时,却很少有人能够清晰地说出它到底是什么,需要遵守什么样的准则. ...

  5. Microservice架构模式简介

    在2014年,Sam Newman,Martin Fowler在ThoughtWorks的一位同事,出版了一本新书<Building Microservices>.该书描述了如何按照Mic ...

  6. const,static,extern 简介

    const,static,extern 简介 一.const与宏的区别: const简介:之前常用的字符串常量,一般是抽成宏,但是苹果不推荐我们抽成宏,推荐我们使用const常量. 执行时刻:宏是预编 ...

  7. HTTPS简介

    一.简单总结 1.HTTPS概念总结 HTTPS 就是对HTTP进行了TLS或SSL加密. 应用层的HTTP协议通过传输层的TCP协议来传输,HTTPS 在 HTTP和 TCP中间加了一层TLS/SS ...

  8. 【Machine Learning】机器学习及其基础概念简介

    机器学习及其基础概念简介 作者:白宁超 2016年12月23日21:24:51 摘要:随着机器学习和深度学习的热潮,各种图书层出不穷.然而多数是基础理论知识介绍,缺乏实现的深入理解.本系列文章是作者结 ...

  9. Cesium简介以及离线部署运行

    Cesium简介 cesium是国外一个基于JavaScript编写的使用WebGL的地图引擎,一款开源3DGIS的js库.cesium支持3D,2D,2.5D形式的地图展示,可以自行绘制图形,高亮区 ...

随机推荐

  1. 【html】button按钮的一些问题

    问题: button 按钮在不设置 type 属性时,在不同的浏览器作用不一样.举个例子: html: <!doctype html> <html lang="en&quo ...

  2. 提示Can't load package:dclite70.bpl解决方法

    64位系统安装Delphi7提示Can’t load package:dclite70.bpl 2015年04月05日 ⁄ 杂谈 ⁄ 共 392字 ⁄ 字号 小 中 大 ⁄ 暂无评论 ⁄ 阅读 1,7 ...

  3. REST RPC架构思想

    1.REST RPC是什么? REST RPC是一个改进版的RPC架构,它是为了解决传统的RPC和REST方案的一些不足之处而生的,它结合了REST API和RPC的优点,同时又克服了REST API ...

  4. 【汇总】涉及iOS&iPhone开发相关文章汇总

    此文章汇总本博客中有涉及iPhone开发的相关文章,不定时更新中... 1.NSUserDefaults快速存储数据: http://www.cnblogs.com/ios-wmm/archive/2 ...

  5. 如何安装最新版本的memcached

    转载自孟叔的博客:  https://learndevops.cn/index.php/2016/06/10/how-to-install-the-latest-version-of-memcache ...

  6. Android网络访问库 - Retrofit学习(1)基础

    Retrofit是什么 Retrofit是一个类型安全的HTTP客户端,支持Android和Java.它是Square公司开源的项目,当前版本2.0. 在实际开发中,我们Retrofit配合OKHTT ...

  7. MARIADB 在 OPENSUSE 的安装。

    1.MARIADB  在 OPENSUSE  的安装或者升级  (参考 Setting up MariaDB Repositories ) OPENSUSE 从 12.3 版本开始,默认带有 MARI ...

  8. LeetCode: 3_Longest Substring Without Repeating Characters | 求没有重复字符的最长子串的长度 | Medium

    题目: Given a . For . 解题思路: 这个题让找一个字符串中具有不重复单词的最长子串的长度,如:ababc,子串为abc,长度为3.有这么几个方法: 方法一: 依赖字符串本身的一些特有函 ...

  9. c和c++关于const的一些区别

    以下参考了网上的一些资料并通过程序验证. 注意,以下情况都是用gcc和g++编译器得到的结果,用vs编译器又会有所不同. 以下说下c和c++中const定义的常量的一些区别: c++中用const定义 ...

  10. ubuntu 添加管理员账户

    sudo adduser cat 输入密码即可 sudo adduser cat sudo 为cat 添加sudo 权限