ASP.NET Razor
程序员文章站
2022-09-30 20:59:49
一、为什么要学习Razor? 可以让服务器代码(就是c#和vb)嵌入到网页中,也就是说这个页面中包含html代码和C#(vb)代码。基于服务器的代码可以在网页传送给浏览器时,创建动态 Web 内容。当一个网页被请求时,服务器在返回页面给浏览器之前先执行页面中的基于服务器的代码。通过服务器的运行,代码 ......
一、为什么要学习razor?
可以让服务器代码(就是c#和vb)嵌入到网页中,也就是说这个页面中包含html代码和c#(vb)代码。基于服务器的代码可以在网页传送给浏览器时,创建动态 web 内容。当一个网页被请求时,服务器在返回页面给浏览器之前先执行页面中的基于服务器的代码。通过服务器的运行,代码能执行复杂的任务,比如进入数据库。
二、razor代码的语法
- razor 代码块包含在 @{ ... } 中
- 内联表达式(变量和函数)以 @ 开头
- 代码语句用分号结束
- 变量使用 var 关键字声明
- 字符串用引号括起来
- c# 代码区分大小写
- c# 文件的扩展名是 .cshtml
下面请看一个案例:
(1)创建一个以.cshtml结尾的页面:
(2)然后代码
<!doctype html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8"/> <title></title> </head> <body> @{ var message = "李白是最帅的,没有之一"; } <p>对于他的粉丝来说:@message</p> @{ var name = "李白"; string techno = "青莲剑歌"; string action = name + "在面对十万敌人时,毫无惧色,使出了:" + techno + "技能,横扫八方"; } <p>@action</p> </body> </html>
使用对象
比如说内置对象date:
<!doctype html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8"/> <title></title> </head> <body> <table border ="1"> <tr><th width="100px">name</th> <td width ="100px">value</td> </tr> <tr> <td>day</td> <td>@datetime.now.day</td> </tr> <tr> <td>hour</td> <td>@datetime.now.hour</td> </tr> <tr> <td>minute</td> <td>@datetime.now.minute</td> </tr> <tr> <td>second</td> <td>@datetime.now.second</td> </tr> </table> </body> </html>
变量
变量是用来存储数据的。一个变量的名称必须以字母字符开头,并且不能包含空格或者保留字符。一个变量可以是一个指定的类型,表示它所存储的数据类型。string 变量存储字符串值("welcome to runoob.com"),integer 变量存储数字值(103),date 变量存储日期值,等等。变量使用 var 关键字声明,或通过使用类型(如果您想声明类型)声明,但是 asp.net 通常能自动确定数据类型。
@{ var message = "李白是最帅的,没有之一"; string name = "李白"; }
转换数据类型
从一种数据类型转换到另一种数据类型,有时候是很有用的。最常见的例子是将字符串输入转换为另一种类型,如整数或者日期。
一般规则下,都是将用户输入看做字符串处理,即使用户输入了数字。因此数值输入必须被转换成数字,然后才能将其用于计算。
下面列出了常用的转换方法:
<!doctype html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8"/> <title></title> </head> <body style="background-color: beige; font-family: verdana, arial;"> @{ var totalmessage = ""; if(ispost) { var num1 = request["text1"]; var num2 = request["text2"]; //将string类型转换成为int类型 var total = num1.asint() + num2.asint(); totalmessage = "total = " + total; } } <html> <body style="background-color: beige; font-family: verdana, arial;"> <form action="" method="post"> <p><label for="text1">first number:</label><br> <input type="text" name="text1" /></p> <p><label for="text2">second number:</label><br> <input type="text" name="text2" /></p> <p><input type="submit" value=" add " /></p> </form> <p>@totalmessage</p> </body> </html>
循环
<!doctype html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8"/> <title></title> </head> <body> <!-- for 循环 如果需要重复运行相同的语句,您可以编写一个循环。 如果您能够确定循环的次数,则可以使用 for 循环。这种循环类型是专门为计数或反向计数设计的: --> @for(int i = 0;i< 20;i++) { <p>line :@i</p>} <!-- for each 循环 如果您需要处理集合或数组,则通常要用到 for each 循环。 集合是一组相似的对象,for each 循环允许您在每个项目上执行一次任务。for each 循环会遍历集合直到完成为止。 下面的例子遍历 asp.net request.servervariables 集合。 --> <ul> @foreach(var x in request.servervariables) { <p>@x</p> } </ul> <!-- while 是一种通用的循环。 while 循环以关键词 while 开始,后面跟括号,其中定义循环持续的长度,然后是要循环的代码块。 while 循环通常会对用于计数的变量进行增减。 在下面的例子中,循环每运行一次,+= 运算符就向变量 i 增加 1。 --> @{ var j = 0; while (j < 5) { j += 1; <p>line #@j</p> } } </body> </html>
循环综合实例
<!doctype html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8"/> <title></title> </head> <body> @{ string[] members = {"jani", "hege", "kai", "jim"}; int i = array.indexof(members, "kai")+1; int len = members.length; string x = members[2-1]; } <html> <body> <h3>members</h3> @foreach (var person in members) { <p>@person</p> } <p>the number of names in members are @len</p> <p>the person at position 2 is @x</p> <p>kai is now in position @i</p> </body> </html> </body> </html>