一,简介
Razor 是一种标记语法,可以让您将基于服务器的代码(Visual Basic 和 C#)嵌入到网页中。
基于服务器的代码可以在网页传送给浏览器时,创建动态 Web 内容。当一个网页被请求时,服务器在返回页面给浏览器之前先执行页面中的基于服务器的代码。通过服务器的运行,代码能执行复杂的任务,比如进入数据库。
二,简单语法
就以C#和html为例,他的语法非常简单,@启动的区域为标准的C#代码,其他部分是普通的html代码。
用法:
1.@{C#代码块}
@{string a= "abc";}
@a
<html>
<head>
<meta name="viewport" content="width=device-width" />
<title>Index</title>
</head>
<body>
@{ string s = "rupeng"; }<br/>
abc@s.achx<br />
@s<br />
@s.Length;<br />
</body>
</html>
输出的结果如下:@后边是C#的语句,需要遵循C#的规则,但是如果@后不符合C#的语法,会被默认为html语句。若是将“abc@s.achx”修改为“abc@(s).achx”,则s就是输出字符串,就不会是@s。
2.@Model
@Mdel.dog.Name
public class TestController : Controller
{
// GET: Test
public ActionResult Index(IndexModel model)
{
model.Result = model.Num1 + model.Num2;
return View(model);
}
}
@model WebApplication3.Models.IndexModel
<html>
<head>
<meta name="viewport" content="width=device-width" />
<title>Index</title>
</head>
<body>
<form action="/Test/Index" method="post">
Num1:<input type="text" name="Num1" value="@Model.Num1" />+
Num2:<input type="text" name="Num2" value="@Model.Num2" />
<input type="submit" value="=" />
<span>@Model.Result</span>
</form>
</body>
</html>
结果如下图,开始两个text默认值为0;点击等于按钮没请求了index,进行了加法运算,将结果返回回来了,又一次验证@后边跟C#语句。
4.@if(),@foreach等C#语句
下面的代码是不可行的,错误的,纯文字会被识别为C#代码。
if(Model.IsOK)
{
我想输出一段文字;
}
如果想要输出大量的文字应该在代码前后加上html标签
if(Model.IsOK)
{
<span> 我想输出一段文字;</span>
}
Rezor会只能识别那块是C#,哪里是html,html中想运行C#代码就用@,想在C#中代码中输入html就写html标签。
下边这个是foreach的举例。
@foreach(var item in strs)
{
<li>yes @item</li>
}
下面的博客链接是我写的很多例子,可以从我写的例子中,对比输出来进行学习。