@的使用

前言

@符号在IT领域使用广泛,社交网站的@是提醒用户;Razor里面的@是服务器代码起始标记,二者不一样

@作用

@ 是Razor语法的服务器代码块开始符号@后面写C#服务器代码。
对比:aspx 使用 <% %> 作为服务器代码标记,php/jsp也有自己的标记。

两种核心写法

@{ } 代码块(多行C#语句)

写完整C#逻辑,定义变量、写业务逻辑,语句要带分号

@{
    Layout = null;
    string webName = "Google";
    int abd;
    //Convert.ToInt32();
}Code language: JavaScript (javascript)
  • 写在视图最上方;
  • 里面执行C#,不会直接输出到页面
  • 变量在此定义,后面html可以引用。
@表达式 输出表达式(直接输出值到页面)

不需要分号,把变量、方法返回值渲染输出到html页面。

<div>@DateTime.Now.ToString()</div>

@{
    string str = "dddd";
}
<div>@str</div>Code language: HTML, XML (xml)

浏览器渲染结果:

hello  Google
2016/9/24 9:23:38
dddd
@{ 语句; } 行内代码块(页面内局部写语句)
<p>@{string str = "dddd";}</p>Code language: HTML, XML (xml)

这里只是执行赋值,不会输出内容;想要显示,需要再写@str输出。

@foreach / @if 流程控制

Razor支持直接在html中写C#流程控制,@foreach@if,大括号内部可以混合html标签。

<b>执行C# 普通代码:</b><br />
@DateTime.Now.Date.ToShortDateString()
<br />
<b>执行纯C#语句段:</b>
@{
    List<string> list = new List<string>() { "MVC3", "Razor" };
    list.Add(".Net4");
    list.Add("");
}
<ul>
@foreach (string s in list)
{
    if (string.IsNullOrEmpty(s))
    {
        <li>空</li>
    }
    else
    {
        <li>@s</li>
    }
}
</ul>Code language: PHP (php)

控制器代码(对应这个视图)

public ActionResult Index()
{
    return View();
}Code language: PHP (php)

总结

  1. @{ ... }:执行C#多行语句,执行,不输出,代码末尾必须分号;
  2. @变量 / @方法()输出结果到网页,不加 ;
  3. @foreach@if:Razor流程关键字,大括号内可以穿插HTML;
  4. Razor视图把C#服务器代码 和 HTML写在一起,服务器执行完C#,生成普通html返回浏览器。

发表回复

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