@{ } 代码块

@{ } 代码块基础

@{ } 内部写完整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)

表达式输出两种写法

  1. @变量名:直接输出变量
@{
    int age = 100;
    age++;
}
@age
  1. @(表达式):支持运算、字符串拼接等复杂逻辑
@(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转义< >等符号转义成&lt; &gt;,标签原样显示,不会解析。

@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&gt;&lt;";
    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)

总结

  1. @{ }:执行C#代码,不自动输出,语句必须带分号;
  2. @变量 / @(表达式):输出内容到网页;
  3. @::在@{ }代码块内部输出HTML标签;
  4. Html.Raw():原样解析HTML标签;普通@变量默认会转义HTML;
  5. @* 注释内容 *@ Razor服务端注释,浏览器看不到。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注