zoukankan      html  css  js  c++  java
  • Razor语法和Razor引擎大全

     

    一、Razor语法

    1、Razor的标识符

             解释:@字符被定义为Razor服务器代码块的标识符,后面的表示是服务器代码了。web form中使用<%%>中写服务器代码一个道理。在vs工具里面提供了代码着色和智能感应的功能。

    1.  
      @{
    2.  
      string userName = "启超";
    3.  
      <span>我的名字叫:@userName</span>
    4.  
      <span>我的出生日期:@DateTime.Now.ToString("yyyy-MM-dd");</span>
    5.  
      }

    2、Razor的作用域

             解释:在上面一个例子中都已经使用到了大括号{},不错,大括号里面的就是表示作用域的范围,用形如 “@{code}”来写一段代码块。在作用域 “@(code)” 中输出也是用@符号的。

             Index.cshtml页面:

    1.  
      我的年龄:
    2.  
      @{
    3.  
      int age = 25;
    4.  
      string sex = "男";
    5.  
      @age
    6.  
      }性别:@(sex)

    3、Razor和Html混合编写

             解释: 
             a.在作用域内容如果是以html标签开始则视为文本输出 
             b.如果输出@,则使用@@ 
             c.如果要输出非html标签和非Razor语句的代码,则用 "@:" ,他的作用是相当于在处于html下面编写一样了,如果在 "@:" 后面加上@就表示Razor语句的变量,如下:

            Index.cshtml页面:

    1.  
      @{
    2.  
      var strzm = "abc";
    3.  
      @:this is a mail:2734796332@qq.com.this is var:@strzm,this is mail@strzm,this is @@
    4.  
       
    5.  
      //输出abc
    6.  
      @strzm
    7.  
      }

    4、Razor类型转换

             解释:As系列扩展方法和Is系列扩展方法(string类型才能转) 
               

    1.  
      AsInt(),IsInt() 
    2.  
       AsBool(),IsBool() 
    3.  
       AsFloat(),IsFloat() 
    4.  
       AsDecimal(),IsDecimal() 
    5.  
       AsDateTime(),IsDateTime() 
    6.  
      ToString()

            Index.cshtml页面:

    1.  
      @{
    2.  
      string ss = "123";
    3.  
      }
    4.  
      string转int:@ss.AsInt()

    5、Razor其他

            解释:

           

    1.  
      @Href("~/")//表示网站的根目录 
    2.  
       @Html.Raw('<font color='red'>红字</font>')就会显示出红色的”红字“,不用的话会直接显示这段html字符串(<font color='red'>红字</font>)

    ————————————————————————————————————————————

    二、Razor引擎

    1、布局(Layout)(@RenderBody()方法)

            解释:Layout方式布局就相当于一个模板一样的,我们在它地址地方去添加代码。相当于定义好框架,作为一个母版页的,在它下面的页面需要修改不同代码的地方使用@RenderBody()方法。 
            母版页:(~/Views/Layout/_SiteLayout.cshtml)

    1.  
      <!DOCTYPE html>
    2.  
      <html lang="en">
    3.  
      <head>
    4.  
      <meta charset="utf-8"/>
    5.  
      <title>我的网站 - @Page.Title</title>
    6.  
      </head>
    7.  
      <body>
    8.  
      @RenderBody()
    9.  
      </body>
    10.  
      </html>

            子页面:(~/Views/Home/About.cshtml)

    1.  
      @{
    2.  
      Layout = "~/Views/Layout/_SiteLayout.cshtml";
    3.  
      }
    4.  
      <h1>
    5.  
      关于我的网站
    6.  
      </h1>
    7.  
      <p>
    8.  
      这是一些内容显示在关于我们这个页面,我们用的是SiteLayout.cshtml这个主页母版页。
    9.  
      <br />
    10.  
      当前时间:@DateTime.Now
    11.  
      </p>

    2、页面(@RenderPage()方法)

            解释:page当需要在一个页面中,输出另外一个Razor文件(页面)的内容时候用到,比如头部或尾部这些公共的内容时需要用到,用@RenderPage()方法

            母版页:(~/Views/Layout/_SiteLayout.cshtml)

    1.  
      <!DOCTYPE html>
    2.  
       
    3.  
      <html>
    4.  
      <head>
    5.  
      <meta name="viewport" content="width=device-width" />
    6.  
      <title>Simple Site</title>
    7.  
      </head>
    8.  
      <body>
    9.  
      <!--头部-->
    10.  
      @RenderPage("~/Views/Layout/_header.cshtml")
    11.  
       
    12.  
      <!--底部-->
    13.  
      @RenderPage("~/Views/Layout/_footer.cshtml")
    14.  
      </body>
    15.  
      </html>

            公共页:(~/Views/Layout/_header.cshtml)

    1.  
      <div id="header">
    2.  
      <a href="#">主页</a>
    3.  
      <a href="#">关于我们</a>
    4.  
      </div>

    3、Section区域(@RenderSection())

          解释:Section是定义在Layout的页面中使用的。在Layout的页面中用。在要Layout的父页面中使用@RenderSection()方法。

           母版页:(~/Views/Layout/_SiteLayout.cshtml) 

    1.  
      <!DOCTYPE html>
    2.  
       
    3.  
      <html>
    4.  
      <head>
    5.  
      <meta name="viewport" content="width=device-width" />
    6.  
      <title>Simple Site</title>
    7.  
      </head>
    8.  
      <body>
    9.  
      <div id="left-menu">
    10.  
      @RenderSection("menu",true)
    11.  
      </div>
    12.  
      </body>
    13.  
      </html>

             公共页:(~/Views/Layout/_menu.cshtml)      

    1.  
      @{
    2.  
      Layout = "~/Views/Layout/_SiteLayout.cshtml";
    3.  
      }
    4.  
      <h1>
    5.  
      关于我的网站
    6.  
      </h1>
    7.  
      <p>
    8.  
      这是一些内容显示在关于我们这个页面,我们用的是SiteLayout.cshtml这个主页母版页。
    9.  
      <br />
    10.  
      当前时间:@DateTime.Now
    11.  
      </p>
    12.  
      @section menu{
    13.  
      <ul id="sub-menu">
    14.  
      <li>菜单1</li>
    15.  
      <li>菜单2</li>
    16.  
      <li>菜单3</li>
    17.  
      <li>菜单4</li>
    18.  
      </ul>
    19.  
      }

            如果在子页面中没有去实现了menu了,则会抛出异常。我们可以它的重载@RenderSection("menu", false)

    1.  
      @if (IsSectionDefined("menu"))
    2.  
      {
    3.  
      @RenderSection("menu", false)
    4.  
      }
    5.  
      else {
    6.  
      <p>menu Section is not defined!</p>
    7.  
      }

    4、Helper

         @helper就是可以定义可重复使用的帮助器方法,不仅可以在同一个页面不同地方使用,还可以在不同的页面使用。

         4.1、新建一个HelperMath.cshtml页面

    image image

         4.2、HelperMath.cshtml页面写方法

    1.  
      @*求和*@
    2.  
      @helper sum(int a, int b)
    3.  
      {
    4.  
      int result = a + b;
    5.  
      @result
    6.  
      }

           4.3、Index.cshtml页面调用

    1+2=@HelperMath.sum(1, 2)<br />
  • 相关阅读:
    maven工程下添加oracle驱动包
    面试题----入参两个Integer,无返回值,然后使这个两个值在调用函数后交换
    使用spring data solr 实现搜索关键字高亮显示
    MyBatisPlus忽略映射字段注解
    Linux下Solr单机版、集群版安装与配置
    AngularJs实现全选功能
    SpringBoot2.0整合mybatis、shiro、redis实现基于数据库权限管理系统
    springboot2.0集成shiro出现ShiroDialect报错找不到AbstractTextChildModifierAttrPr
    linux下ssh远程登录服务器入门操作
    英文邮件寻求帮助的礼貌用语
  • 原文地址:https://www.cnblogs.com/wfy680/p/14274235.html
Copyright © 2011-2022 走看看