Razor语法大全

简介: 原文:Razor语法大全 本文页面来源地址:http://www.cnblogs.com/dengxinglin/p/3352078.html Razor是基于framewor4以上写的一个开源项目:https://github.com/Antaris/RazorEngine/ Razor是包含了模板引擎和动态编译两部分。
原文: Razor语法大全

 本文页面来源地址: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

 

目录
相关文章
|
SQL 监控 开发工具
移动端统计分析工具Firebase、AppsFlyer、Adjust、Flurry、Tap stream、Kochava 、branch不完全对比分析
文章对比分析了Firebase、AppsFlyer、Adjust、Flurry、Tapstream、Kochava和Branch等移动端统计分析工具的优缺点,包括成本、数据追踪能力、用户界面、市场占有率和特定平台的集成情况,旨在帮助用户根据自身需求选择最合适的分析工具。
1954 0
|
8月前
|
前端开发 UED 开发者
React 滚动监听 Scroll Listener
本文介绍React中实现滚动监听的方法,涵盖基本概念、常见问题及解决方案。通过监听`window`对象的`scroll`事件,开发者可以在用户滚动时触发自定义逻辑。文章详细探讨了冗余调用、组件卸载时未清理事件监听器、滚动位置不一致等常见问题,并提供了防抖、节流、保存滚动位置等解决方案。同时,强调了跨浏览器兼容性和性能优化的重要性,帮助开发者在实际项目中更好地实现滚动监听功能。
225 17
|
8月前
|
存储 缓存 Java
程序员必懂!上下文切换到底是怎么回事?
大家好,我是小米,一个喜欢分享技术的程序员。今天聊聊社招面试中的高频考点——上下文切换。它指CPU在多个任务间切换时保存和恢复状态的过程,常见于进程、线程切换及中断处理。上下文切换有CPU时间开销、缓存失效、内存开销等代价。优化方法包括减少线程数量、选择合适的并发模型、优化锁使用等。理解这些不仅能提升面试表现,还能写出更高效的代码。欢迎关注我的微信公众号“软件求生”,获取更多技术干货!
281 6
|
存储 安全 数据安全/隐私保护
交换机 功能详解
交换机 功能详解
1252 1
|
消息中间件 缓存 Linux
RT-Thread记录(十、全面认识 RT-Thread I/O 设备模型)
学完 RT-Thread 内核,从本文开始熟悉了解 RT-Thread I/O 设备管理相关知识。
978 0
RT-Thread记录(十、全面认识 RT-Thread I/O 设备模型)
|
Windows
FL Studio20.9中文版免费制作音乐的软件app
互联网不发达之时,音乐制作似乎只适合音乐专业人士去完成,但是随着互联网的快速发展,一方面计算机普及到每家每户,另一方面音乐制作软件的发展,凭借一台计算机即可完成音乐制作。得益于互联网技术的快速发展,使得音乐制作成本大大降低,使得业余人士也能够将其发展为自己的兴趣爱好,下面将阐述什么是音乐制作。
774 0
|
人工智能 自然语言处理 算法
天猫精灵开放平台体验
天猫精灵开放平台体验
1042 0
天猫精灵开放平台体验
|
人工智能 达摩院 自然语言处理
摘取人工智能的明珠:达摩院语音技术发展之路
达摩院语音实验室的使命是为阿里巴巴经济体供给无处不在的语音交互智能服务,并将语音技术予以阿里云客户,进一步拓展语音技术行业边界。在阿里CIO学院攻“疫”技术公益大咖说的第十八场直播中达摩院语音实验室负责人鄢志杰将为大家讲解达摩院语音技术发展之路,一窥语音技术的大图、经济体内应用,以及通过阿里云对外进行商业输出的全貌。
1671 0
摘取人工智能的明珠:达摩院语音技术发展之路
|
机器学习/深度学习 人工智能 算法
【深度学习之美】LSTM长短记,长序依赖可追忆(入门系列之十四)
如果你是一名单身狗,不要伤心,或许是因为你的记忆太好了。有时,遗忘是件好事,它让你对琐碎之事不再斤斤计较。然而每当自己记不住单词而“问候亲人”时,也确实气死个人。于是你懂得了如何控制好什么信息该保留,什么信息该遗忘。而长短期记忆网络(LSTM)就是这么干的。来看看是怎么回事吧?
29159 0
|
机器学习/深度学习 新零售 开发工具
拍立淘Open SDK-在你的App里用相机连接淘宝和世界
使用拍立淘OpenSDK,可以在你的App里用相机连接淘宝和世界。。。
7958 0