iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >MVC3 On Razor使用
  • 913
分享到

MVC3 On Razor使用

Razor 2023-01-31 02:01:55 913人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

微软在10号发布了asp.net mvc3的发布候选版(RC:Release-candidate),该版本提供了Razor视图引擎的智能感知等功能,并同样具备Online许可。 特意下载安装了下,下载地址:Http://www.micros

微软在10号发布了asp.net mvc3的发布候选版(RC:Release-candidate),该版本提供了Razor视图引擎的智能感知等功能,并同样具备Online许可。

特意下载安装了下,下载地址:Http://www.microsoft.com/downloads/en/details.aspx?FamilyID=a920ccee-1397-4feb-824a-2dfefee47d54&displaylang=en

试用了传说中强大的Razor引擎,实在是太棒了。下面是我的一些使用学习体会:

 

一、Razor基础简介

Razor采用了cshtml后缀的文件名,截图如下:

clip_p_w_picpath002

 

A、 版面布局

从图上看到,新的视图引擎已经没有了Site.Master这种MasterPage了,取而代之的是_Layout.cshtml和_ViewStart.cshtml。

_Layout.cshtml等同于MasterPage;如下图所示:

clip_p_w_picpath004

这个_Layout.cshtml文件中已没有了MasterPage中<asp:ContentPlaceHolder ID="MainContent" runat="server" />的标签语句了,取而代之的是

@RenderBody():呈现子页的主体内容

@RenderSection():呈现特别的节部分。

HelperResult RenderSection(string name, bool required = true);

required默认为true必须覆写,设为false则为可选覆写;

注意的是:该函数在RC版中参数有所改变,参数中optional改为required,据说和VB的关键字冲突

 

下图则为我在子页的页脚部分覆写,在子页实现时,使用@section 自定义节名{ }格式。

clip_p_w_picpath006

 

如果我们想在父页里写一个默认实现节,在子页作为可选实现该怎么做呢?

这个在MasterPage是直接支持的,但在Razor里就要稍显复杂些,个人觉得这种写法还可以改进下;

如下图所示,我在父页写了一个默认的页脚实现,如果子页有实现则使用子页实现,没有就用默认实现。

这里要先通过bool IsSectionDefined(string name)函数判断是否有子页实现,有则调用子页实现。

clip_p_w_picpath008

 

_ViewStart.cshtml:该页面可以理解为其它View的基类。它默认的代码就3行如下所示:

clip_p_w_picpath010

在该页面里定义了其它View的默认MasterPage是“~/Views/Shared/_Layout.cshtml”;

当然在这里还可以定义一些公用的函数及变量,以供其它页面可以直接调用。

 

B、与ASPX语法的区别

 

ASPX:<% %> 

Razor:@{ }

这两种都是代码块的编写符号,只不过用Razor会让代码更加简洁和舒适,下图为对比语法:

clip_p_w_picpath002[4]

 

ASPX:<%= %> 

Razor:@
在Razor中,你只需要用一个”@”字符就可以标识代码块的开始,它能够自动判断后面变量的结束位置,如下图对比看出,使用Razor语法,少写了不少代码。

clip_p_w_picpath004[5]

clip_p_w_picpath006[4]

而且,Razor解析器内置了很多语言的智能.
大部分情况下,Razor解析器都有足够的能力推导出模板里的一个“@”字符到底是在代码中用到,还是在静态内容中用到。

例如,我在下例中的邮件地址中使用了”@”字符,则scottgu@microsoft.com被解析为静态内容,而@DateTime.Now被解析代码执行了,很强大吧!
如果碰到和代码一样格式的内容(或者你想把代码当作内容看待),你可以显式地打@@来用另外一个”@”字符进行转义。

p_w_picpath

 

ASPX:<%: %> 

Razor:@()

这两种语法都能实现内容的编码,只不过Razor更为方便一些,如下图所示:

clip_p_w_picpath008[4]

clip_p_w_picpath010[4]

结果输出:<span>文本编码</span>

 

C、其他的一些Razor语法

p_w_picpath

如上图所示,

@using :导入命名空间

@model:声明页面接收的Model

@section:定义要实现父页的节信息

这里列出的只是一些简单常用的,需要更多语法可以参考api文档。

 

二、MVC3 RC特性展示

相比较MVC2,版本3还是有很大的改进(除了Razor引擎)。

 

A、Partial Page Output Caching(部分页输出缓存)

ASP.net MVC在第一版的时候就开始支持整页缓存。从ASP.NET MVC V3开始,我们也可以支持部分页缓存了。

这可以很容易的使你部分缓存或者一个response的片段。

 

例如我们要根据一个类别获取产品列表,当请求类别相同时,就输出缓存的产品列表。

如下图所示,Action上定义了输出缓存的过期时间1小时,缓存参数为cateGory。

因此当发生重复请求时,就可以自动输出缓存信息避免频繁查询数据库,减轻服务器负担和提高响应速度:

p_w_picpath

p_w_picpath

 

B、隐式javascript和验证

其中一个比较出色的ASP.NET MVC3的改进是ajax 和 Validation helpers将会默认使用unobtrusive javascript,ajax采用了Jquery来编写。

p_w_picpath

p_w_picpath

默认配置节里启用了unobtrusive JavaScript,故将上述js开启后,则验证就为客户端验证。

相比MVC2的ajax验证,不需要在View页里添加<%Html.EnableClientValidation(); %>这行代码了。

 

C、全局过滤器

ASP.NET MVC 支持通过过滤机制来描述性地应用“横切”逻辑。 你可以使用属性语法为控制器和执行函数指定过滤器,如下所示

p_w_picpath

但在使用中,我们常常希望将一些过滤器逻辑应用于程序中的所有控制器上,如Authorize过滤器。

现在ASP.NET MVC3 能够让你指定一个全局的过滤器,这个过滤器可以应用于程序中的所有控制器上。

如下图所示:在Global文件中将自定义过滤器加入GlobalFliterCollection中就可以了

p_w_picpath

 

在MVC3中,这个过滤器的判定逻辑非常灵活,你可以配置一个全局过滤器,使它只在某些条件符合的时候才启用。

如下图所示,我实现了一个全局权限过滤器,在任何页面如果没有登录的话则跳转到LogOn页面。因为是全局的,当跳转到LogOn页面时,

也要判断是否有权限,所以最终页面上什么都不显示。

那如何解决这个问题呢,让LogOn页面不应用该全局权限呢?

如下图所示:我们实现一个IFilterProvider,在里面过滤掉LogOn页面而应用于其他的页面。代码如下:

p_w_picpath

在使用Authorize过滤器时,发现了一个bug,就是当没有权限时,系统会自动跳到“Account/LogIn”页面,而不是跳转到WEBconfig中设置的页面。

<authentication mode="FORMs">
      <forms  loginUrl="~/Account/LogOn" timeout="2880" />
</authentication>

这个设置好像不起作用了,通过查看ScottGu’s Blog,知道这是一个bug,解决方案就是在Configuration配置节下加入

<appSettings>
    <add key="autoFormsAuthentication" value="false" />
</appSettings>

我想在正式版中不会再有这个问题了。

 

还有其他的一些新的特性,可以参考http://tech.it168.com/a2010/1111/1124/000001124749_1.shtml


--结束END--

本文标题: MVC3 On Razor使用

本文链接: https://www.lsjlt.com/news/186257.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • MVC3 On Razor使用
    微软在10号发布了ASP.NET MVC3的发布候选版(RC:Release-candidate),该版本提供了Razor视图引擎的智能感知等功能,并同样具备Online许可。 特意下载安装了下,下载地址:http://www.micros...
    99+
    2023-01-31
    Razor
  • ajax mvc3 razor 分页
    数据分页一只是一个老生常谈的问题,只要是做系统开发,一般都会牵扯到。最新学习了Razor,用到分页功能,分享下如何实现Ajax分页。 1.准备工作    网上有现成的分页工具MVCPager,最新的是1.5版本,综合比较后感觉这个控...
    99+
    2023-01-31
    分页 ajax razor
  • ASP.NET MVC3 beta怎么使用
    这篇文章主要介绍“ASP.NET MVC3 beta怎么使用”,在日常操作中,相信很多人在ASP.NET MVC3 beta怎么使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”ASP.NET MVC3 be...
    99+
    2023-06-17
  • 精通MVC3摘译(4)-使用Area
    使用Areas MVC Framework支持将一个web application放入一个area,每个area表示一个特殊功能的应用程序片段,比如管理,账单,客户支持等等。这对大型项目很有用,如果大型项目中所有的controller,Vi...
    99+
    2023-01-31
    摘译 Area
  • ASP.NET中Razor语法怎么使用
    Razor语法是一种在ASP.NET中用于创建动态网页的模板引擎。它允许开发人员将C#或VB.NET代码与HTML标记混合在一起,以...
    99+
    2023-10-23
    ASP.NET Razor
  • C#中Razor模板引擎怎么使用
    这篇文章主要讲解了“C#中Razor模板引擎怎么使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C#中Razor模板引擎怎么使用”吧!使用视图引擎可以完成一些需要定制化内容格式的问题,比如...
    99+
    2023-06-29
  • C#中Razor模板引擎简单使用
    目录引用使用Razor模板引擎语法1、简介:2、原理:3、语法规则:使用视图引擎可以完成一些需要定制化内容格式的问题,比如邮件模板。 引用 install-package Razor...
    99+
    2024-04-02
  • 如何使用Ajax局部更新Razor页面
    这篇文章主要介绍如何使用Ajax局部更新Razor页面,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!Razor功能非常强大,但是本身并不能做到无刷新,所以需要配合ajax使用本文就做...
    99+
    2024-04-02
  • ASP.NETCore中的Razor页面使用视图组件
    视图组件简介 在新的ASP.NET Core MVC中,视图组件类似于局部视图,但它们更强大。视图组件不使用模型绑定,仅依赖于您在调用时提供的数据。 视图组件特性: 呈现页面响应的某...
    99+
    2024-04-02
  • .NET MVC Razor怎么用
    .NET MVC Razor怎么用,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。忙碌的工作总是占据了生活的大部分的时间!所以我的博客到现在还是寥寥的几篇文章,技...
    99+
    2023-06-17
  • ASP.NET MVC 3中的Razor特性怎么使用
    本篇内容主要讲解“ASP.NET MVC 3中的Razor特性怎么使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“ASP.NET MVC 3中的Razor特性怎么使用”吧!开工 目录...
    99+
    2023-06-17
  • Razor常用语法实例分析
    本文小编为大家详细介绍“Razor常用语法实例分析”,内容详细,步骤清晰,细节处理妥当,希望这篇“Razor常用语法实例分析”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。@using@using 指令用于向生成的...
    99+
    2023-06-29
  • ASP.NET Core Razor页面用法介绍
    简介 随着ASP.NET Core 2 即将来临,最热门的新事物是Razor页面。在之前的一篇文章中,我们简要介绍了ASP.NET Core Razor 页面。 Razor页面是AS...
    99+
    2024-04-02
  • MVC3如何快速搭建Web应用
    这篇文章给大家分享的是有关MVC3如何快速搭建Web应用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。Web应用不像winform应用,要想让用户得到更流畅更舒适的体验,方法之一...
    99+
    2024-04-02
  • Razor常用语法介绍及示例
    @using @using 指令用于向生成的视图添加 C# using 指令: @using System.IO @{ var dir = Directory.GetCurr...
    99+
    2024-04-02
  • sql join on的使用方法
    这篇文章主要介绍“sql join on的使用方法”,在日常操作中,相信很多人在sql join on的使用方法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”sql join...
    99+
    2024-04-02
  • jQuery如何使用on()方法
    这篇文章主要为大家展示了“jQuery如何使用on()方法”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“jQuery如何使用on()方法”这篇文章吧。请使用&#...
    99+
    2024-04-02
  • Mysql使用on update current_timestamp问题
    目录mysql使用on update current_timestamp注意点先说结论CURRENT_TIMESTAMP()和ON UPDATE及索引相关基本概率代码与实例总结Mysql使用on update curre...
    99+
    2023-03-20
    Mysql current_timestamp on update current_timestamp Mysql timestamp
  • MySQL中ON DUPLICATE key update的使用
    目录一、主键索引、唯一索引和普通索引的关系二、实战操作1.ON DUPLICATE key update使用介绍:2.ON DUPLICATE key update测试样例:三、总结一、主键索引、唯一索引和普通索引的关系...
    99+
    2023-05-25
    MySQL ON DUPLICATE key update
  • VB.NET如何使用On Error语句
    这篇文章主要介绍VB.NET如何使用On Error语句,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!VB.NET推荐使用Try...End Try块来进行结构化的异常处理,但是为了确保兼容性,它也从以前版本的BAS...
    99+
    2023-06-17
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作