以前的MVC用Html标签和C#代码混用,看上去杂乱,<% %>标记成对出现,现在的Razor引擎内部帮我们做了闭合<%%>使用@
//<% %> 内联代码块,可以在aspx或ascx文件里面嵌入后台代码(注意不能放在<script>标签里面)
<% for (int i = 0; i < 100; i++)
{
Response.Write(i.ToString() + "<br>");
}
%>
类似的应用
<%# %> <%#Eval("title").tostring()%>
<%= %> 调用后台成员变量 <%=a%> string a="hongda";
<%@ %> 在aspx页面中导入命名空间 <%@ import namespace="System.Data"%>
现在还是说Razor吧,飞远了。
1.方法
@{Response .Write ("hongda");}
用@来调用后台的方法,必须要加{}形成代码块,for,foreach,if不算,本身就是代码块的
在调用变量作为一个参数时,有没有@都一样
@{
var list = new List<string> { "hongda", "hong", "dda" };
foreach(var li in list){
<li><a>@li</a></li>
}
}
@{Response.Write(@list[0]);}
@{Response.Write(list[0]);}
此时list[0]就是一个字符串,也可以当成一个字符串用
@{Response .Write (@list[0]+"<br>");}
@{Response .Write (list[0]+"<br>");}
2.变量
一个变量如果不被方法调用,那么它就要被输出页面,这时就必须加@
@: 可以用于输出,当有标点时也一起输出
@:“sdaf"sadf,. 输出:“sdaf"sadf,.
@:@list[0]; hongda
@:只能放在@{}的代码块中使用,
@{
@:哈哈 哈哈
@:"sadf"sdafsa23#., "sadf"sdafsa23#.,
@list[0]; hongda
@:@list[0]; hongda
}
在代码块的外部就不需要了,代码块外面加@:就发错。
@list[0]; hongda;
@list[0] hongda
代码块内部
@list[0]; hongda
@list[0] hongda
注意标点
对象调用方法
@{
var i = "10";
}
<p>
i = @i.AsInt()
</p>
显示:i=10 原来int类型也可以显示啊
前面调用的对象都是在@{}中声明的,还有就是在之前就有的对象,前台调用
@{
ViewBag.Title = "主页";
}
@*输出变量*@
<h1> 这是 @ViewBag.Title</h1>
if/for/foreach
![](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
@{ int i = 1; } @if(i>1){ @i; }else{ @i; } @{ if(i>1){ @i; } else{ @i; } }
他妈的,终于晓得怎么插代码了