博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
我要学ASP.NET MVC 3.0(七): MVC 3.0 新的Razor引擎
阅读量:2385 次
发布时间:2019-05-10

本文共 2909 字,大约阅读时间需要 9 分钟。

概述

 

随着MVC 3.0的发布,越来越多的人都纷纷投入了基于MVC 3.0的开发,不仅如此,MVC 3.0的Razor引擎更是在UI上给力,使得表单数据显示变得更加简便,给人眼前一亮的感觉。

一开始的WebForm页面 Html标签和C#代码混用看上去杂乱,而且<% %>标记成对出现,有时代码太混乱了都找不到前后标记,杯具啊!!!

MVC 3.0 新的WebPages设计,他给我们简洁的代码实现方案。简单的@标记就可以代替成对出现的<% %>,使用起来方便快捷。

实例代码:Razor之简

ASPX

Razor

非常明显,Razor在内部帮我们做了闭合<%%>  其实就是这个小小的闭合让我们可以在html内更加“流畅”的调用服务端代码。可见Razor的出现还是很给力的!!!

Razor(CSHTML)引擎

 

_appstart.cshtml : 

应用程序启动时在Global. Application_Start方法后执行。

用于进行App的初始化时,需要进行处理的内容.例:向数据库记录系统初始化的一些信息。

功能与Global.Application_Start类似,差别在于:Global的Start先执行,然后在到该_appStart,值得注意的是在_appStart上下文中可以使用.NET4的dynamic新特性,作为属性、字段、索引器、参数、返回值或类型约束的类型。

_Layout.cshtml:

布局页面即和aspx的母版页相似。

 

Razor基础语法

 

Razor语法其实很简洁就是以@开头,输出变量要以@开头,循环判断for if等还是以@开头,代码体更是要以@开头。。

 

代码注释

@*输出变量*@

 

上下文使用变量

@{    ViewBag.Title = "主页";}@*输出变量*@

这是 @ViewBag.Title

效果

 

输出Html内容

@{    ViewBag.Title = "主页";}@*输出Html内容*@@{        

@ViewBag.Title

DIV
}

效果

 

支持C#语法

@* 支持C#语法*@@{    var list = new List
{ "张三", "李四", "王五", "赵柳" }; foreach (var person in list) {
  • @person
  • }}

    效果

     

    支持逻辑关键字如foreach if else等

    @{    ViewBag.Title = "主页";}@* 支持C#语法*@@{    var list = new List
    { "张三", "李四", "王五", "赵柳" };}@* 支持逻辑关键字如foreach if else等*@@foreach (var person in list){
  • @person
  • }

    效果

     

    逻辑判断

    @{    ViewBag.Title = "主页";}@* 支持C#语法*@@{    var list = new List
    { "张三", "李四", "王五", "赵柳" };}@* 逻辑判断*@@if (list.Count > 0){ foreach (var person in list) {
  • @person
  • }}

    效果

     

    文字输出 变量输出

    @{    ViewBag.Title = "主页";}@* 支持C#语法*@@{    var list = new List
    { "张三", "李四", "王五", "赵柳" };}@* 文字输出 变量输出*@@{ @:(*^__^*) 嘻嘻 @:@list[0] }

    效果

     

    数据类型强制转换

    @*数据类型强制转换*@@{        var i = "10";}

    i = @i.AsInt()

    效果

     

    循环

    @{    ViewBag.Title = "主页";}@* 支持C#语法*@@{    var list = new List
    { "张三", "李四", "王五", "赵柳" };}@*循环*@@for (int j = 0; j < list.Count; j++){ @:@j: @:@list[j] }
    @*第二种写法*@@{ for (int j = 0; j < list.Count; j++) { @:@j: @:@list[j] }}

    效果

    Razor自定义控件

     

    看看微软自己提供的登录和注销

    ASPX 

    LogOnUserControl.ascx页面

    <%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl" %><%    if (Request.IsAuthenticated) {%>        欢迎使用 <%: Page.User.Identity.Name %>!        [ <%: Html.ActionLink("注销", "LogOff", "Account") %> ]<%    }    else {%>         [ <%: Html.ActionLink("登录", "LogOn", "Account") %> ]<%    }%>

     Razor

    _LogOnPartial.cshtml页面

    @if(Request.IsAuthenticated) {    
    欢迎使用
    @Context.User.Identity.Name! [ @Html.ActionLink("Log Off", "LogOff", "Account") ]
    }else { @:[ @Html.ActionLink("登录", "LogOn", "Account") ]}

    调用

    ASPX

    Site.Master页面

    <% Html.RenderPartial("LogOnUserControl"); %>

    Razor

    _Layout.cshtml页面

    @Html.Partial("_LogOnPartial")

    关于布局母板以后再探讨。。

     

    总结

     

    从没有接触过Razor的我,今天在做了这么多练习后,突然对Razor引擎有了莫名的好感,感觉很给力。不知大家有没有这种感觉。。

    希望MVC在以后的版本里面能够持续出新,在编码方式上带给我们新的享受。。。

    转载地址:http://dmjab.baihongyu.com/

    你可能感兴趣的文章
    GTK/DirectFB两个闪烁的问题
    查看>>
    《Linux内核修炼之道》 之 高效学习Linux驱动开发
    查看>>
    编写可移植C/C++程序的要点
    查看>>
    DirectFB代码导读
    查看>>
    linux fork函数浅析
    查看>>
    内核启动时间优化
    查看>>
    基于Linux的多播编程
    查看>>
    网络字节序
    查看>>
    Linux网络命令详解
    查看>>
    GNU C 的 __attribute__ 机制
    查看>>
    atoi,atol,strtod,strtol,strtoul详解
    查看>>
    基于HZK16的汉字显示技术
    查看>>
    嵌入式web服务器对比
    查看>>
    select 函数使用指难
    查看>>
    人类的15个欲望与游戏设计
    查看>>
    高速缓存
    查看>>
    kernel基本功练习
    查看>>
    UNIX/LINUX 平台可执行文件格式分析
    查看>>
    轻量级服务器选择
    查看>>
    补丁的制作和使用:diff和patch
    查看>>