@{ } 代码块基础
@{ } 内部写完整C#服务器代码,语法和普通C#一致,语句末尾必须加分号。
@{ }只会执行代码,不会自动输出到页面,想要输出需要使用@变量或者@(表达式)。
@{
int num1 =2013;
int num2 =1;
int sum = num1 + num2;
//输出变量
@sum;
//输出运算表达式,括号包裹
@(num1 + num2);
//字符串拼接表达式输出
string lastYear = "2013";
string thisYear = "2014";
@(lastYear + thisYear);
}Code language: JavaScript (javascript)
表达式输出两种写法
@变量名:直接输出变量
@{
int age = 100;
age++;
}
@age
@(表达式):支持运算、字符串拼接等复杂逻辑
@(1+2)
@(lastYear + thisYear)
Html.Raw() 与 Html.Encode() 重点
Html.Raw("html文本")
不做转义,直接把字符串当做HTML标签渲染,标签会生效。
@Html.Raw("<b>NewYork</b>")
//页面会显示加粗的 NewYorkCode language: HTML, XML (xml)
Html.Encode("文本")
HTML转义,< >等符号转义成< >,标签原样显示,不会解析。
@Html.Encode("<b>www.foxdevelop.com</b>")
//页面原样输出字符串 <b>www.foxdevelop.com</b>,不会加粗Code language: HTML, XML (xml)
普通
@变量默认等价于Html.Encode(),会自动转义HTML字符;如果希望HTML生效,才用Html.Raw()。
代码块内写HTML:@:
在@{ }代码块里面,如果要直接输出HTML标签,需要加 @: 前缀。
@{
int currentYear = DateTime.Now.Year;
for (int i = 0; i < 10; i++)
{
//代码块内部输出html,必须@:
@:<p>@(currentYear+i)</p>
//错误:直接写<p></p>会语法报错
//<p></p>
}
}Code language: JavaScript (javascript)
Razor注释 @* *@
Razor服务器注释,不会发送到浏览器页面。
@* @int a = 1+2; *@
@* <p></p> 直接写html代码回出错 *@Code language: HTML, XML (xml)
完整示例
@{
int age = 100;
age++;
@age
string school = string.Empty;
school = "Foxdevelop><";
int b = Convert.ToInt32("111");
@Html.Raw("<b>NewYork</b>");
@:@(<b>NewYork</b>)
}
@Html.Raw("<b>www.foxdevelop.com</b>")
@Html.Raw(1)
@Html.Encode("<b>www.foxdevelop.com</b>")Code language: HTML, XML (xml)
总结
@{ }:执行C#代码,不自动输出,语句必须带分号;@变量/@(表达式):输出内容到网页;@::在@{ }代码块内部输出HTML标签;Html.Raw():原样解析HTML标签;普通@变量默认会转义HTML;@* 注释内容 *@Razor服务端注释,浏览器看不到。
Previous: @的使用
Next: 代码块与 HTML 混写