Razor语法大全

From: 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


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/402926.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

el-dialog的内容不刷新;el-dialog内容有缓存;el-dialog里面的组件不刷新问题;

el-dialog里面的内容是带缓存的&#xff0c;也就是说除了第一次打开会初始化&#xff0c;其他次打开都是直接加载缓存的&#xff1b; 这就导致了有时候打开弹框时候&#xff0c;内容不刷新。有说法说是el-dialog嵌套太深大致的。 解决方法&#xff1a;直接给弹框的内容部分添加…

el-badge标记;el-tabs配合el-badge提示数字

标签选项卡配个标记数字提示 注意&#xff1a;el-tabs可以通过具名 slot 来实现选项卡的内容 <template><div><el-tabs v-model"tabValue"><el-tab-pane label"全部" name"1"></el-tab-pane><el-tab-pane lab…

[DP之计数DP]

其实说实在 我在写这篇博客的时候 才刚刚草了一道这样类型的题 之前几乎没有接触过 接触过也是平时比赛的 没有系统的做过 可以说0基础 我所理解的计数dp就是想办法去达到它要的目的 而且一定要非常劲非常快 都是一个很小的数然后有很多种接下来的方案使得这个数一下子变很大 计…

C++程序设计(第2版)课后习题答案--第11章

11.9 定义分数类Rational...... View Code 1 #include<iostream.h>2 #include<stdlib.h>3 class Rational{4 private:5 int fm,fz;6 int getZdgys(int a,int b);7 public:8 Rational(){9 fm1;fz0; 10 } 11 Rational(int a,int b); 1…

提交本地项目到github

要托管到github&#xff0c;那你就应该要有一个属于你自己的github帐号&#xff0c;所以你应该先到github.com注册 打开浏览器 在地址栏输入地址&#xff1a;github.com 填写用户名、邮箱、密码 点击Sign up即可简单地注册 2完成注册&#xff0c;进入github平台&#xff0c; 点…

php 的命名空间 看鸟哥后的随笔

我以前貌似真心没有想过php的命名空间&#xff0c;我每次写文件都会记得不让类名相重&#xff0c; 看完命名空间了这个&#xff0c;我发现可以解决我的一部分问题 1 MyLove.php2 namespace Zj;3 class Application{4 public function toMyLove(){5 echo Marx is…

vue页面截图;H5页面截图;vue项目中将特定网页内容生成图片(截图);html2canvas截图

功能&#xff1a; 1.兼容 PC 和 Mobile&#xff1b; 2.对指定的区域进行截取&#xff1b; 3.可以控制截图大小&#xff1b; 4.截图生成base64图片地址 一、安装插件 npm install html2canvas --save 或 yarn add html2canvas二、在.vue页面引入使用 import html2canvas fro…

CentOS6.8升级gcc到4.8.5总结

From&#xff1a; http://www.cjjjs.com/paper/czxt/2017222114137150.aspx [摘要] 操作系统是CentOS6.8的32位版本&#xff0c;yum自带的gcc版本为4.4.7&#xff0c;不支持C11特性。所以需要升级到4.8.5&#xff0c;至少要升级到4.8.1才完全支持C11。本文提供了自动安装脚本和…

JAVA设计模式之【单例模式】

任务管理器案例 1.单例类 package Singleton;/*** Created by Jim on 2016/9/28.*/ public class TaskManager {private static TaskManager tm null;private TaskManager() {System.out.println("创建任务管理器");}public void displayProcesses() {System.out.pr…

【云计算】K8S DaemonSet 每个node上都运行一个pod

Kubernetes容器集群中的日志系统集成实践 Kubernetes是原生的容器编排管理系统&#xff0c;对于负载均衡、服务发现、高可用、滚动升级、自动伸缩等容器云平台的功能要求有原生支持。今天我分享一下我们在Kubernetes集群中日志管理的实践方案。在这个方案中&#xff0c;除了Doc…

企业微信报错https:// open.work.weixin.qq.com/devtool/query?e=60020

企业微信报错&#xff1a; not allow to access from your ip, hint: [1667358733640290333963300], from ip: 180.164.177.83, more info at https:// open.work.weixin.qq.com/devtool/query?e60020 企业微信对60020处理&#xff1a;我是没太搞懂这个 企业微信报错60020解决…

swagger接口数据上传

后端接口参数格式&#xff1a; 1.正常大对象传参&#xff1a; 2.正常参数传参&#xff1a; 3.第三者传参&#xff1a;

值得一做》关于并查集的进化题目 BZOJ1015(BZOJ第一页计划)(normal-)

这道题和以前做过的一道经典的洪水冲桥问题很像&#xff0c;主要做法是逆向思维。&#xff08;BZOJ第10道非SB题纪念&#xff09; 先给出题目 Description 很久以前&#xff0c;在一个遥远的星系&#xff0c;一个黑暗的帝国靠着它的超级武器统治者整个星系。某一天&#xff0c;…

Functional ProgrammingLazy Code:被我忘记的迭代器

本文给出一个Functional Programming和Lazy Code的一个例子。跟着思路走&#xff0c;关键的地方会有相应的说明。 我们想实现一个判断"素数"的小程序&#xff0c;如下&#xff1a; using System;namespace FunctionalProgramming {class Program{static void Main(st…

PhpStorm配置Xdebug调试PHP程序

From: http://blog.csdn.net/ljfrocky/article/details/46531137这篇文章主要介绍了如何使用PhpStorm Xdebug调试PHP程序&#xff0c;需要的朋友可以参考下。运行环境PhpStorm版本&#xff1a;8.0.3 PHP版本&#xff1a;5.4.12 xdebug版本&#xff1a;php_xdebug-2.2.3-5.4-vc…

对刚

3 /*直接链表模拟 */ #include<cstdio> #include<iostream> #define M 100010 using namespace std; int next[M],fa[M],vis[M],n,t; int main() {//freopen("jh.in","r",stdin);//freopen("resist.in","r",stdin);//freo…

动态修改el-input样式;动态修改elmentUI元素样式;css变量

场景&#xff1a;正常我们动态修改div元素的样式&#xff0c;使用:style和:class即可&#xff1b;但是我们想要动态修改element的组件样式时候&#xff0c;例如el-input字体颜色&#xff0c;由于el-input的样式嵌套很深&#xff0c;我们需要修改的实际是.el-input__inner这个样…

【Mac】sublime text3标题栏显示文件完整路径

开发的兄弟对于sublime text一定不会陌生&#xff0c;目前在mac上使用这个软件遇到一个小问题&#xff0c;就是标题栏只显示了文件名&#xff0c;而不是文件全路径&#xff0c;所以当一个项目里同名的文件比较多的时候&#xff0c;就怕搞错文件。因此&#xff0c;我非常希望标题…

Error: listen EADDRINUSE: address already in use :::7197

vue启动项目报 Error: listen EADDRINUSE: address already in use :::7197 我是直接将项目的终端关闭&#xff0c;然后重新打开终端输入 npm run dev 就启动好了

SpringAPI手动创建代理对象——ProxyFactory

2019独角兽企业重金招聘Python工程师标准>>> 可以通过注解的方式来自定义代理对象的创建&#xff0c;同时也可以通过SpringAPI&#xff0c;手动编程的方式来创建代理对象。 几个重要的API&#xff1a; ProxyFactory\MethodInterceptor\Advice\AfterReturningAdvice\…