本篇博文将进入MVC 3 的世界了,首先学习一下MVC 3 新增的Razor视图引擎的基本语法。

1. 使用 @ 字符将代码添加到页面中。正如传统的aspx视图的<% %>相同。

    下面代码是介绍单语句块、内嵌代码块、多行语句块

 1 <!-- 简单块 声明两个变量-->
2 @{int num = 10;}
3 @{string str = "hello cnblogs";}
4 <!-- 内联表达式 输入刚才声明的两个变量-->
5 <p>刚才声明的整形的值为: @num</p>
6 <p>刚才声明的字符型的值为: @str</p>
7
8 <!-- 多声明代码块 -->
9 @{
10 string strHello = "您好,我叫李亮";
11 string now = DateTime.Now.ToString();
12 string sayHello = strHello + "当前时间为:" + now;
13 }
14 <p>问好: @sayHello</p>

运行效果如下:

如果我要是在输出的文本中加入html标记呢?

string sayHello = strHello + "<b>当前时间为:</b>" + now;

和上面的代码唯一不同的是在“当前时间为:”几个字的首尾加了<b></b>,大家都知道b标记是加粗文本显示的,那么好咱先看下运行结果。



    运行结果为:

“问好:您好,我叫李亮<b>当前时间为</b>:2012-5-25 18:03:21”

和想象的不一样哎,没关系!到这咱得引入一个新的概念html编码。asp.net为了安全考虑会默认的把诸如<  > . @ 等等特殊的字符编码。为什么要这么干就是为了防止SSH跨站脚本攻击,您感兴趣的话可以搜一下有关跨站脚本攻击的知识,今天本文的重点不是讲它。从浏览器的html源中可以看出,那源是什么呢?

     <p>问好: 您好,我叫李亮&lt;b&gt;当前时间为:&lt;/b&gt;2012-5-26 18:25:49</p>

可以很明显的看出<b>被编码成&lt;b&gt;  <b/>被编码成:&lt;/b&gt; 因此呈现在页面中就是刚才那个结果了。

问题来了,结果办法呢??再往下看

 <p>问好: @Html.Raw(sayHello)</p>

@Html.Raw()  防止自动编码^^^^^^^

2. 代码和标记混合

 @for (int i = 0; i <= 10; i++) {
<span>第 @i 行<br /></span>
}

运行结果:

大家有没有发现一个问题:就是在第和数字以及数字和行字之间必须有空格,这是因为@字符前面是空字符的时候编译器才能识别@符号后面的代码是C#代码,同理C#完事后也必须跟的是空字符,否则就本例而言它就默认识别为@i行 既 i行这个变量(因为编译器找不到这个变量所以报错。) O(∩_∩)O~。那如果我非得输出没有空格的字符串怎么办呢?告诉您非常好吧只需要一对括弧就搞定。

 @for (int i = 0; i <= 10; i++) {
<span>第@(i)行<br /></span>
}

运行结果自己猜吧!如果您这也猜不到的话,(*^__^*) 嘻嘻…… 不说了 - -/

3.代码与纯文本混合

 <p>第一种方式</p>
@if (true) {
<text>这里是if语句内部-1</text>
}
<p>第二种方式</p>
@if (true) {
@:这里是if语句内部-2
}

3.1 第一种方式是使用了Razor中内置的标签<text></text>注意这不是html标签,他的映射到浏览器上的时候就是纯文本显示没有任何的标记。

3.2 第二种方式是使用@:  他就表示后面的东东就是文本了。

运行效果:

另附html源文件:证明text标签额并非html标签

 <p>第一种方式</p>
这里是if语句内部-1
<p>第二种方式</p>
这里是if语句内部-2

4. 表达式与文本混合

 <p>表达式与文本混合</p>
Hello @strHello .当前时间: @now

此种方式很简单不做太多解释,知识点是确保@字符前面是空字符 然后表单式结尾也是空字符即可。

运行结果

5. Email地址和@符号

 <p>Email地址</p>
wlit2011@126.com

Razor视图会自动识别email地址,而不需要进行特殊的处理,但是我就单单的输出一个@字符怎么办呢?您说怎么办啊学这么多年程序了,还能怎么办反转义呗!

     反转义的方法是加前面在加一个@字符既您写两个@字符  @@ 就就识别成一个@字符。

<p>我要输出强大的@@符号</p>

运行结果

6.刚才要输出的实例超出了页面范围所以我想临时把前面的演示代码注释掉,好下面讲怎么注释

服务器端注释是对代码的注释它不同于客户端注释(<!-- -->),客户端的注释代码会被发送到浏览器虽在界面上看不到,但是查看源文件会看到滴。相反服务器端注释不会被发送到浏览器。起到对代码注释的效果,看下以下的代码也正好回顾下以上将的知识。

 1 <h2>RazorTest</h2>
2 @*
3 <!-- 简单块 声明两个变量-->
4 @{int num = 10;}
5 @{string str = "hello cnblogs";}
6 <!-- 内联表达式 输入刚才声明的两个变量-->
7 <p>刚才声明的整形的值为: @num</p>
8 <p>刚才声明的字符型的值为: @str</p>
9
10 <!-- 多声明代码块 -->
11 @{
12 string strHello = "您好,我叫李亮";
13 string now = DateTime.Now.ToString();
14 string sayHello = strHello + "<b>当前时间为:</b>" + now;
15 }
16 <p>问好: @Html.Raw(sayHello)</p>
17
18 @for (int i = 0; i <= 10; i++) {
19 <span>第@(i)行<br /></span>
20 }
21
22 <p>第一种方式</p>
23 @if (true) {
24 <text>这里是if语句内部-1</text>
25 }
26 <p>第二种方式</p>
27 @if (true) {
28 @:这里是if语句内部-2
29 }
30 <p>表达式与文本混合</p>
31 Hello @strHello .当前时间: @now
32 *@
33 <p>Email地址</p>
34 wlit2011@126.com
35
36 <p>我要输出强大的@@符号</p>

从第2行的@*(服务端注释开始标记)一直到第32行的*@(服务端注释结束标记)中间即为注释内容,输出结果即为第5.Email地址和@符号的输出结果。

格式:@* 注释内容 *@  非常类似于C#的多行注释方式(/*    */)

7.内容中混合代码

好好的看下下面这些代码是对以上知识的综合应用

<p>内容中混合代码</p>
<ul>
@for (int i = 0; i <= 10; i++) {
<li>
当前循环到第@(i+1)次
@if (i == 5) {
@:哇塞!遍历到数字5了
}
else if (i == 9) {
@:亲这是循环倒数第二次也就是第@(i+1)次哟!
}
</li>
}
</ul>

运行结果

ASP.NET MVC 3 Razor 视图引擎 基本语法的更多相关文章

  1. ASP.NET MVC扩展自定义视图引擎支持多模板&动态换肤skins机制

    ASP.NET mvc的razor视图引擎是一个非常好的.NET MVC框架内置的视图引擎.一般情况我们使用.NET MVC框架为我们提供的这个Razor视图引擎就足够了.但是有时我们想在我们的项目支 ...

  2. ASP.NET MVC 扩展自定义视图引擎支持多模板&动态换肤skins机制

    ASP.NET  mvc的razor视图引擎是一个非常好的.NET  MVC 框架内置的视图引擎.一般情况我们使用.NET MVC框架为我们提供的这个Razor视图引擎就足够了.但是有时我们想在我们的 ...

  3. ASP.NET MVC3 Razor视图引擎-基础语法

    I:ASP.NET MVC3在Visual Studio 2010中的变化 在VS2010中新建一个MVC3项目可以看出与以往的MVC2发生了很明显的变化. 1.ASP.NET MVC3必要的运行环境 ...

  4. (转)ASP.NET MVC3 Razor视图引擎-基础语法

    转自:http://kb.cnblogs.com/page/96883/ I:ASP.NET MVC3在Visual Studio 2010中的变化 在VS2010中新建一个MVC3项目可以看出与以往 ...

  5. ASP.NET MVC3 系列教程 - Razor视图引擎基础语法

    http://www.cnblogs.com/highend/archive/2011/04/09/aspnet_mvc3_razor_engine.html 4. 关于所有带"_" ...

  6. ASP.NET MVC 自定义Razor视图WorkContext

    概述 1.在ASP.NET MVC项目开发的过程中,我们经常需要在cshtml的视图层输出一些公用信息 比如:页面Title.服务器日期时间.页面关键字.关键字描述.系统版本号.资源版本号等 2.普通 ...

  7. Razor视图引擎基础语法

    在VS2010中新建一个MVC3项目可以看出与以往的MVC2发生了很明显的变化 1.ASP.NET MVC3必要的运行环境为.NET 4.0 (想在3.5用MVC3,没门!) 2.默认MVC3模板项目 ...

  8. ASP.NET MVC 3: Razor中的@:和语法

    原文 ASP.NET MVC 3: Razor中的@:和语法 [原文发表地址] ASP.NET MVC 3: Razor’s @: and <text> syntax[原文发表时间] De ...

  9. MVC 【Razor 视图引擎】基础操作 --页面跳转,传值,表单提交

    ASPX  与  Razor  仅仅是视图不一样. 新建项目----ASP.NET MVC 4 Web 应用程序------选择模板(空).视图引擎(Razor ) 1.视图中 c# 代码  与 HT ...

随机推荐

  1. CentOS 6.4 下搭建 MongoDB 2.4.9 环境

    一.下载MongoDB2.4.9版 下载MongoDB wget http://fastdl.mongodb.org/linux/mongodb-linux-x86_64-2.4.9.tgz 解压Mo ...

  2. Discuz 3.X 门户文章插入图片自动添加 alt 标签

    最近用 Discuz 搭建了个网站--儿童安全座椅网(www.bbseat.com.cn),用到了门户功能,不得不说Discuz 的功能还是非常强大的,但在使用过程中发现在发表文章时添加了图片却不能像 ...

  3. sql语句中like匹配的用法详解

    在SQL结构化查询语言中,LIKE语句有着至关重要的作用. LIKE语句的语法格式是:select * from 表名 where 字段名 like 对应值(子串),它主要是针对字符型字段的,它的作用 ...

  4. PHP:parse_str()字符串函数

    parse_str()-把字符串解析成多个变量. 描述:void parse_str(sring $str  [, array $arr]) 如果str是URL传递入的查询字符串(query stri ...

  5. Javascript(JS)中的大括号{}和中括号[]详解

    一.{ } 大括号,表示定义一个对象,大部分情况下要有成对的属性和值,或是函数. 如:var LangShen = {"Name":"Langshen",&qu ...

  6. .NET SDK和下载

    http://blogs.msdn.com/b/dotnet/p/dotnet_sdks.aspx .NET SDK和下载 您可以通过下载.NET框架针对包和软件开发工具包,并使用它们与Visual ...

  7. Android中解析JSON形式的数据

    1.JSON(JavaScript Object Notation) 定义: 一种轻量级的数据交换格式,具有良好的可读和便于快速编写的特性.业内主流技术为其提供了完整的解决方案(有点类似于正则表达式, ...

  8. Mysql ubuntu下的安装卸载

    删除 mysql sudo apt-get autoremove --purge mysql-server-5.0sudo apt-get remove mysql-serversudo apt-ge ...

  9. int main(int argc,char* argv[]) 简单理解

    (1)第一个int代表整个main函数的返回值,若函数正常执行完毕,返回0,异常返回则是-1 (2)int argc代表命令行参数的总个数,既然是个数,那就是整型的,即:int; (3)char* a ...

  10. topcoder 673

    DiV1 300:给一组士兵再给一组战马都有权值. 安排战马的顺序的方案数,是第一个士兵和其战马的权值乘积最大. 做法:随便暴力就好. 枚举战马和第一个士兵匹配.其他士兵按权值从大到小排序,战马权值按 ...