一、什么是Razor
包含Razor语法的文件以.cshtml为文件扩展名,.cs文件熟悉C#的都知道是类文件,可以编译执行。cshtml就可以理解为包含可执行的C#代码的html文件。
为什么可以包含可执行代码呢?就是因为Razor语法。当请求某个页面时,服务器先检测页面是否包含Razor语法的代码,如果有就执行被标记的代码,转换为字符串呈现在html中。最后返回的当然是纯html页面。
Razor是服务端语法,由服务端执行。
二、语法
1、当 @ 符号后跟 Razor 保留关键字时,它会转换为 Razor 特定标记。
2、若想使用@字符,则使用@@进行转义:
转义后:
3、主要语法
- Razor 代码块包含在 @{ ... } 中
- 内联表达式(变量和函数)以 @ 开头
- 代码语句用分号结束
- 变量使用 var 关键字声明
- 字符串用引号括起来
- C# 代码区分大小写
示例:
代码块:
@{
ViewBag.Title = "Browse all products (custom route name)";
string sName = "ZhangSan";
var Age = 18;
}
<h1>@ViewBag.Title</h1>
4、循环:for、foreach、while
<tbody>
@foreach (var product in Model)
{
<tr>
<td>@product.Name</td>
<td>@product.Category</td>
</tr>
}
</tbody>
5、条件判断:if、 else if 、esle、switch
三、完整示例
CSHTML代码:
@{
Layout = null;
}
@using MVCTestDemo.Models
@model MVCTestDemo.Models.UserInfo
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width" />
<title>用户信息</title>
</head>
<body>
<div>
@Model.Name<br />
@Model.Age.ToString()<br />
别名:@ViewBag.Name<br />
</div>
<input id="Button1" type="button" value="button" />
<table style="width:100%;">
@foreach (var item in Model.ListProdurct)
{
<tr>
<td>@item</td>
</tr>
}
</table>
<form action="/home/SaveUser" method="post">
<table>
<tr>
<td>姓名:</td>
<td><input type="text" id="TxtName" name="Name" value="" /></td>
<td>@Html.ValidationMessage("FirstName")</td>
</tr>
<tr>
<td>年龄:</td>
<td><input type="number" id="TxtAge" name="Age" value="" /></td>
<td>@Html.ValidationMessage("LastName")</td>
</tr>
<tr>
<td>密码:</td>
<td><input type="text" id="TxtPassWord" name="PassWord" value="" /></td>
<td>@Html.ValidationMessage("Salary")</td>
</tr>
<tr>
<td>
<input type="submit" name="BtnSave" value="保存" />
</td>
</tr>
</table>
</form>
</body>
</html>
HTML:
页面:
参考地址:https://docs.microsoft.com/zh-cn/aspnet/core/mvc/views/razor?view=aspnetcore-2.2