Razor语法大全(cshtml语法)

Razor语法大全(cshtml语法)本文页面来源地址:http://www.cnblogs.com/dengxinglin/p/3352078.htmlRazor是基于framewor4以上写的一个开源项目:https://github.com/Antaris/RazorEngine/Razor是包含了模板引擎和动态编译两部分。本部分就简单记录了模板引擎的一些语法,之后用Razor做一个代码生成器,就使用Razor的语法来。Razo

大家好,又见面了,我是你们的朋友全栈君。

 本文页面来源地址:http://www.cnblogs.com/dengxinglin/p/3352078.html

Razor是基于framewor4以上写的一个开源项目:https://github.com/Antaris/RazorEngine/

Razor是包含了模板引擎和动态编译两部分。本部分就简单记录了模板引擎的一些语法,之后用Razor做一个代码生成器,就使用Razor的语法来。

Razor的发布是和MVC一起的,作为MVC的视图模板引擎。

 

Razor文件类型

   Razor可以在vb.net和C#中使用。分别对应了两种文件类型,.vbhtml和.cshtml 

 

Razor的标识符

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

@{
  
  string userName= "邓星林";}
    <span>@userName</span>
    <span>@DateTime.Now.ToString("yyyy-MM-hh")</span>

 

Razor的作用域

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

@{
    string userName= "邓星林";
    @userName
}

在作用域(代码块)中输出也是用@符号的。

 

用Razor和html代码混合编写

   在Razor中写html代码和html代码中写Razor语句都是可以的,并且还有智能提示。

   a.在作用域内如果是以html标签开始则视为文本输出

   b.如果要输出@,则使用@@

   c.如果要输出非html标签和非Razor语句的代码,则用@:,他的作用是相当于在处于html下面编写一样了,如在@:后面可以加上@就是表示Razor语句的变量

 如:

复制代码
@{

    var str = "abc";
        ////下面会输出:this is a mail:dxl0321@qq.com, this is var: abc,this is mail@str,this is @;
    @: this is a mail:dxl0321@qq.com, this is var: @str,this is  mail@str,this is @@;
    //下面输出abc
    @str
  
}
复制代码

Razor作用块注释

    razor作用块里面本身就是服务器代码了,因此可使用服务器代码的注释,注释有//和/**/分别是单行注释和多行注释。

   另外razor注释还可以使用自身特有的@* 注释的内容 *@,支持单行和多行的。

复制代码
@{
   @*
       多行注释
       多行注释
   *@
   var i = 10;  @* asdfasf *@
}
复制代码

Razor类型转换

         As系列扩展方法和Is系列扩展方法

          AsInt(), IsInt()

      AsBool(),IsBool()

      AsFloat(),IsFloat()

     AsDecimal(),IsDecimal()

      AsDateTime(),IsDateTime()

    ToString()

@{
    var i = “10”;
}
<p> i = @i.AsInt() </p> <!-- 输出 i = 10 --> 

 

razor其它

  @Href(“~/”)//表示网站的根目录

  @Html.Raw(Module.Content)  输出HTML,如:@Html.Raw(‘<font color=’red’>红字</font>’),就会显示出红色的”红字“,不用的话会直接显示这段html字符串(<font color=’red’>红色文字</font>)

 

 

 

在实际中,比如一个网站,整过框架是一样的,而有的地方是很多相同的版块。因此我们需要复用。

 

布局(Layout)

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

复制代码
<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="utf-8"/>
        <title>我的网站 - @Page.Title</title>
    </head>
    <body>
        @RenderBody()
    </body>
</html>
复制代码
@{
    Layout = "/LayoutPage.cshtml";
    Page.Title = "测试页面哦";
}

<p>This is a layout test</p>

 

页面(Page)

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

如:A页面中也要把B页面的内容输出

A页面:

<p>
    @RenderPage("/b.cshtml")
</p>

b页面的代码如下:

<font color="red">这是一个子页面</font>

 

Section区域

    Section是定义在Layou的中使用的。在Layout的页面中用。在要Layout的父页面中使用@RenderSection(“Section名称 “)

定义:

复制代码
<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="utf-8"/>
        <title>我的网站 - @Page.Title</title>
    </head>
    <body>
     @RenderSection("SubMenu")
        @RenderBody()
    </body>
</html>
复制代码

在它的子页面中使用

@section SubMenu{
    Hello This is a section implement in About View.
 }

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

复制代码
 @if (IsSectionDefined("SubMenu"))
        {
            @RenderSection("SubMenu", false)
        }
        else
        {
            <p>SubMenu Section is not defined!</p>
        }
复制代码

 

 Helper

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

如在cshtml中那么写:

复制代码
@helper sum(int a,int b)
{  
   var result=a+b;
  @result  

}
<div >
    <p>@@helper的语法</p>    <p>2+3=@sum(2,3)</p> 
    <p>5+9=@sum(5,9)</p>
</div>
复制代码

我们通常会把一类Helper放在一个单独的cshtml文件中,而文件名就相当于一个类名。

我把sum放在HelpMath.cshtml文件中,则我们在那上面cshtml中的使用方法是:

<p>2+3=@HelpMath.sum(2,3)</p> 
<p>5+9=@HelpMath.sum(5,9)</p>

另外,系统还为我们提供了一些列的Helper,用来简化Html的书写。这些Helper放在@Html中,我们可以方便的使用:

<p>
    @Html.TextBox("txtName")
</p>

 本文页面来源地址:http://www.cnblogs.com/dengxinglin/p/3352078.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/148531.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 书签备份「建议收藏」

    书签备份「建议收藏」BookmarksBookmarks书签栏Bookmarks关于Android实现微信分享的过程和思考-简书HiPP-Shop:Baby>Milchnahrungen>Combiotiklive.cnlive.com/tool/player.swfCity

  • Cinemachine(二)制作不会穿墙(会避开障碍物)的摄像头(Cinemachine Collider)

    Cinemachine(二)制作不会穿墙(会避开障碍物)的摄像头(Cinemachine Collider)在许多的第三人称游戏中,我们的摄像机往往保持着一定的偏移,跟随着我们的角色。但是常常会出现的一种情况就是,当我们的角色走进室内或者靠近墙边或障碍物的时候,如果这个偏移保持不变的话,我们的摄像机就可能会跑到墙体里,或者看向角色时被墙体或障碍物所挡住。因此这种情况下我们的相机往往需要一些特殊的处理,例如修改偏移量来拉近相机与角色的距离等,来防止上述情况的出现。在以往我们可能需要通过射线检测或者碰撞检测等,然后编写一大堆的代码做一堆复杂的判断来修改我们的摄像机的位置。视频链接:https://www.bi

  • 实现不同网段mail服务器之间的邮件转发

    实现不同网段mail服务器之间的邮件转发

  • sql中declare的用法_sql局部变量

    sql中declare的用法_sql局部变量换工作了,以后主要和SqlServer打交道了,仿佛回到了大学,不知道学校的饭还是那么好吃又便宜吗?北京的饭好贵;不知道门口哪家板面的生意是不是还是那么红火,好想再去吃一碗。。。咳咳,不多说了,直接进入主题declare这个类型,其实可以理解为Java里面的public类型变量,全局有效,当然非要较真的话,我觉得归到protected类也可以(不理解的话不要看后半段,只是为了严谨)Java修饰符 public:对所有类可见。使用对象:类、接口、变量、方法 protect..

  • k8s有哪些资源_什么是k8s

    k8s有哪些资源_什么是k8sk8sNamespacePodLabelDeploymentServiceNamespace概述Namespace是kubernetes系统中一种非常重要的资源,它的主要作用是用来实现多套系统的资源隔离或者多租户的资源隔离。默认情况下,kubernetes集群中的所有Pod都是可以相互访问的。但是在实际中,可能不想让两个Pod之间进行互相的访问,那么此时就可以将两个Pod划分到不同的Namespace下。kubernetes通过将集群内部的资源分配到不同的Namespace中,可以形成逻辑上的“组

  • 11111111

    1111111111111111

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号