1.Razor简介
Razor 是一种允许您向网页中嵌入基于服务器的代码(Visual Basic 和 C#)的标记语法。当网页被写入浏览器时,基于服务器的代码能够创建动态内容。在网页加载时,服务器在向浏览器返回页面之前,会执行页面内的基于服务器代码。由于是在服务器上运行,这种代码能执行复杂的任务,比如访问数据库。Razor 基于 ASP.NET,它为 web 应用程序的创建而设计。它拥有传统 ASP.NET 标记的能力。Razor 网页可被描述为带有两种内容的 HTML 页面:HTML 内容和 Razor 代码。
2.语法
C# 的主要 Razor 语法规则:
Razor 代码封装于 @{ ... } 中;
行内表达式(变量和函数)以 @ 开头;
代码语句以分号结尾;
字符串由引号包围;
C# 代码对大小写敏感;
C# 文件的扩展名是 .cshtml
@for (int i = 0; i < 10; i++) {
- @i
}
C#实例:
@{ var myMessage = "Hello World"; }
The value of myMessage is: @myMessage
@{
var greeting = "Welcome to our site!";
var weekDay = DateTime.Now.DayOfWeek;
var greetingMessage = greeting + " Here in Huston it is: " + weekDay;
}
The greeting is: @greetingMessage
3.与对象打交道
"Date" 对象是典型的 ASP.NET 内建对象,但是也可以自行定义对象,一张网页,一个文本框,一个文件,或者一条数据库记录,等等。
Name | Value |
---|---|
Day | @DateTime.Now.Day |
Hour | @DateTime.Now.Hour |
Minute | @DateTime.Now.Minute |
Second | @DateTime.Now.Second |
4.变量
变量名必须以字母字符开头,不能包含空格和保留字符。
使用 var 关键词或类型对变量进行声明,不过 ASP.NET 通常能够自动确定数据的类型。
// 使用 var 关键词:
var greeting = "Welcome to W3School";
var counter = 103;
var today = DateTime.Today;
// 使用 data 类型:
string greeting = "Welcome to W3School";
int counter = 103;
DateTime today = DateTime.Today;
数据类型:
类型 描述 实例
int 整数 103, 12, 5168
float 浮点数 3.14, 3.4e38
decimal 小数 1037.196543
bool 逻辑值 true, false
string 字符串值 "Hello W3School", "Bill"
转换数据类型:
As系列扩展方法和Is系列扩展方法
- AsInt(), IsInt()
- AsBool(),IsBool()
- AsFloat(),IsFloat()
- AsDecimal(),IsDecimal()
- AsDateTime(),IsDateTime()
- ToString()
@{
var i = "10";
}
i = @i.AsInt()
5.读取用户输入
由 Request[] 函数读取输入,并由 IsPost 条件进行测试:
@{
var totalMessage = "";
if(IsPost)
{
var num1 = Request["text1"];
var num2 = Request["text2"];
var total = num1.AsInt() + num2.AsInt();
totalMessage = "Total = " + total;
}
}
@totalMessage
6.If,else if和else
@{var price=25;}
@if (price>=30)
{
The price is high.
}
else if (price>20 && price<30)
{
The price is OK.
}
else
{
The price is low.
}
demo:
@if (Model != null)
{
if (Order>=10)
{
if (Order.name)
{
@for (int i = 0; i < count; i++)
{
@if (count != 1)
{
购买人@(i + 1):
}
else
{
购买人:
}
}
}
}
else if (Order>5&&Order<10)
{
¥@Order.price
}
else
{
...
}
}
7.Switch条件
@{
var weekday=DateTime.Now.DayOfWeek;
var day=weekday.ToString();
var message="";
}
@switch(day)
{
case "Monday":
message="This is the first weekday.";
break;
case "Thursday":
message="Only one day before weekend.";
break;
case "Friday":
message="Tomorrow is weekend!";
break;
default:
message="Today is " + day;
break;
}
@message
8.循环
for循环:
@for(var i = 10; i < 21; i++)
{Line @i
}
forEach循环:
@foreach (var x in Request.ServerVariables)
{- @x
}
while循环:
@{
var i = 0;
while (i < 5)
{
i += 1;
Line #@i
}
}
9.用@明确表示内容的起始
lists
@foreach(var p in lists){
-
@p.listName
@if(p.listCount == 0){
@:(no Left!)
}
}
如果没有将消息 no Left! 嵌套在HTML标签元素内,Razor不能隐式判断@if块中的内容是否是一个内容块的开始。我们用“@:字符序列”来明确地指出我们代码段里的这行应被当作是内容块。
如果要输出非html标签和非Razor语句的代码,则用@:,他的作用是相当于在处于html下面编写一样了,如在@:后面可以加上@就是表示Razor语句的变量:
@{
var str = "abc";
//下面会输出:this is a mail:[email protected], this is var: abc,this is mail@str,this is @;
@: this is a mail:[email protected], this is var: @str,this is mail@str,this is @@;
//下面输出abc
@str
}
10.Razor作用块注释
razor作用块里面本身就是服务器代码了,因此可使用服务器代码的注释,注释有 // 和 /*/ 分别是单行注释和多行注释。另外razor注释还可以使用自身特有的@ 注释的内容 *@,支持单行和多行的。
@{
@*
多行注释
多行注释
*@
var i = 10; @* asdfasf *@
}