011. razor与aspx的区别以及用法
非原创, 摘录网上的文章
页面后缀:
aspx:
index.aspx
Razor:
index.cshtml
使用C#中的类和属性
aspx
< %: DateTime.Now %>
razor:
@DateTime.Now
页面强类型Model
aspx:
Razor:
@model MvcCRUDDeom.Models.OrderInfo
执行语句块:
@{
int i= 0;
<br/>
i = i+10;
}
<%for(int i = 0 ; i<10; i++)%>
<span><%= i %></span>
<%}%>
@for (var i = 0; i < 10; i++)
{
<span>@i </span>
}
@
{
var a=1;
var b="aaa";
}
注意:@{}之间属于一个c#代码区段,在撰写代码时必须符合c#语言规范,也就是必须分号结尾。
如果要在多行后台代码的razor语法中插入html或者其他内容,必须在每一行最前面加上一个"@:"符号,在这个符号的这行代码里,也可以再加上其他razor变量
@
{
var name="aa";
@:您好, 我是@name
}
注释:
razar检视页面中表示注释,用“@*”与“*@”来当注释头尾
如果要在razor页面输出“@”符号,可以用@符号作为跳脱子元,比如@@aaa,输出@aaa
2,razor与html混合输出
if语句范例
@if(ViewBag.IsEnabled){
@:启用
}else{
@:停用
}
如果在if与else代码区块里放置大量的html标签,每行前面都要加"@:"有点麻烦,只要在代码区块的前后加上一组html标签就可以,(纯文字在razor的代码里会自动被视为c#语句,所以必须加标签)
@if(ViewBag.IsEnabled){
<标签>启用</标签>
}else{
<标签>停用</标签>
}
vs工具中的高亮提示,razor中c#代码是显示淡蓝色,如果是白底色的话就代表是razor意外的纯文字,razor会很智能的自动辨别是c#还是html,但是如果我们不想在这个区段出现任何的标签怎么办呢,在razor中使用特殊的<标签text>来代替这个html标签,最后输出到浏览器时就不会出现text标签,当然也可以在多行c#代码区段使用"@:" 或者text作为HTML与razor语法之间的切换