ASP.Net MVC——Razor视图引擎

2024-05-08 02:32
文章标签 引擎 mvc asp net 视图 razor

本文主要是介绍ASP.Net MVC——Razor视图引擎,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

  背景:因为项目的原因,需要用到MVC。所以,在急忙之中,就开始了MVC的学习。刚开始接触MVC的时候,是由别人给的几集视频开始的。可能视频的年代有些久远,所以里边的东西跟项目中有些不同。其中之一就是“视图引擎”,视频中用的是ASPX,可是做项目时用的是Razor。好吧,本着不将就的精神(其实就是有点强迫症),稍微的了解了一下这里。





一、Razor视图引擎

首先,我们先看一段代码:

<span style="font-family:Microsoft YaHei;font-size:18px;"><%if (Model != null)
{%><p><%=Model%></p>
<%}%>
<%else
{%>//Do something
<%}%></span>

这是采用ASPX视图引擎时,View中所写的代码。这段代码给我们的第一印象可能就是<%%>这东西太多了,看着有点眼晕。好吧,接着下一段:

<span style="font-family:Microsoft YaHei;font-size:18px;">@if (Model != null)  
{<p>@Model</p>
}
else
{//Do something 
}</span>

       这段代码看着感觉应该好一些了,这就是采用Razor视图引擎所撰写的。

       当时看到Razor这个单词,我还特意查了一下什么意思,原来是剃刀的意思,细细想来,是有点意思,采用Razor视图引擎,代码瞬间清爽了好多。就犹如一个半个月没有刮胡子的邋遢男,洗个澡,刮完胡子,瞬间变小鲜肉一样。


       在MVC3.0版本的时候,微软终于引入了第二种模板引擎: Razor 。在这之前,我们一直在使用WebForm时代沿留下来的ASPX引擎

       Razor在减少代码冗余、增强代码可读性和Visual Studio智能感知方面,都有着突出的优势。


Razor的语法

       (1)Razor文件类型:Razor支持两种文件类型,分别是 .cshtml 和.vbhtml,其中.cshtml 的服务器代码使用了c#的语法,.vbhtml 的服务器代码使用了vb.net的语法。

       (2)@字符:@是Razor中的一个重要符号,它被定义为Razor服务器代码块的开始符号。


Razor语句块

         (1)在Razor视图引擎中,我们可以使用@{code}来定义一段 代码块 。

         (2)Razor支持代码混写:在代码块中插入HTML、在HTML中插入Razor语句都是可以的。例如,我们可以使用@来作for循环,还可以进行if判断

<span style="font-family:Microsoft YaHei;font-size:18px;">@for (int i = 0; i < 10; i++)
{<p>@i</p>
}@if (ViewData.Count > 0)
{<p>ViewData有数据</p>ViewData["Key"] = "Edison Chou";
}
else
{<p>ViewData暂无数据</p>
}
</span>


Razor页面输出特殊字符串

与在ASPX试图引擎中类似,如果要输出特殊字符串,还是借助HtmlHelper类提供的扩展方法来实现。

(1)输出原生的字符串:@Html.Raw(html)

<span style="font-family:Microsoft YaHei;font-size:18px;">@Html.Raw("<h1>Razor</h1>")</span>

PS:默认的@会解析掉html代码

(2)还可以通过使用 HtmlString 类型和 MvcHtmlString 类型字符串输出原生包含HTML的字符串

<span style="font-family:Microsoft YaHei;font-size:18px;">@{IHtmlString html = new HtmlString("<span style='color:red'>哈喽!!!! </span>");Response.Write(html);
}</span>


Razor服务器端注释为:@*  注释内容  *@


二、页面布局

刚开始的时候,用VS2012新建了一个空的ASP.NET MVC3.0的程序,运行时会出现下边这样的界面。


但是在View中,我根本找不到相关的代码。后来,请教了一下大神,一句话就解决了。

我们先看View中:


这里边有个"_ViewStart.cshtml"页面,它里边的内容是:

@{Layout = "~/Views/Shared/_Layout.cshtml";
}
这里就是指定的默认的母版的位置,也就是网页加载,显示的母版页内容应该是"_Layout.cshtml"

然后,我们看一下母版页"_Layout.cshtml"中的代码:

<!DOCTYPE html>
<html>
<head><title>@ViewBag.Title</title><link href="@Url.Content("~/Content/Site.css")" rel="stylesheet" type="text/css" /><script src="@Url.Content("~/Scripts/jquery-1.7.1.min.js")" type="text/javascript"></script>
</head>
<body><div class="page"><div id="header"><div id="title"><h1>我的 MVC 应用程序</h1></div><div id="logindisplay">@Html.Partial("_LogOnPartial")</div><div id="menucontainer"><ul id="menu"><li>@Html.ActionLink("主页", "Index", "Home")</li><li>@Html.ActionLink("关于", "About", "Home")</li></ul></div></div><div id="main">@RenderBody()</div><div id="footer"></div></div>
</body>
</html>


在母版页中,有一个"@RenderBody()"这个方法相当于一个占位符。


        一般的视图处理,当服务器响应HomeController.Index()的请求时,需要返回Index视图。这里边的逻辑应该是:首先会加载母版页"_Layout.cshtml"的内容,然后遇到"@RenderBody()"时,就会用首页视图"Index.cshtml"的内容置换到这里,最后处理完成后,返回静态界面。就是我们所见到的网页。

       好吧,关于Razor的东西就先介绍到这里吧。 


这篇关于ASP.Net MVC——Razor视图引擎的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/969051

相关文章

LiteFlow轻量级工作流引擎使用示例详解

《LiteFlow轻量级工作流引擎使用示例详解》:本文主要介绍LiteFlow是一个灵活、简洁且轻量的工作流引擎,适合用于中小型项目和微服务架构中的流程编排,本文给大家介绍LiteFlow轻量级工... 目录1. LiteFlow 主要特点2. 工作流定义方式3. LiteFlow 流程示例4. LiteF

SpringBoot集成LiteFlow实现轻量级工作流引擎的详细过程

《SpringBoot集成LiteFlow实现轻量级工作流引擎的详细过程》LiteFlow是一款专注于逻辑驱动流程编排的轻量级框架,它以组件化方式快速构建和执行业务流程,有效解耦复杂业务逻辑,下面给大... 目录一、基础概念1.1 组件(Component)1.2 规则(Rule)1.3 上下文(Conte

Python基于微信OCR引擎实现高效图片文字识别

《Python基于微信OCR引擎实现高效图片文字识别》这篇文章主要为大家详细介绍了一款基于微信OCR引擎的图片文字识别桌面应用开发全过程,可以实现从图片拖拽识别到文字提取,感兴趣的小伙伴可以跟随小编一... 目录一、项目概述1.1 开发背景1.2 技术选型1.3 核心优势二、功能详解2.1 核心功能模块2.

MySQL 存储引擎 MyISAM详解(最新推荐)

《MySQL存储引擎MyISAM详解(最新推荐)》使用MyISAM存储引擎的表占用空间很小,但是由于使用表级锁定,所以限制了读/写操作的性能,通常用于中小型的Web应用和数据仓库配置中的只读或主要... 目录mysql 5.5 之前默认的存储引擎️‍一、MyISAM 存储引擎的特性️‍二、MyISAM 的主

使用easy connect之后,maven无法使用,原来需要配置-Djava.net.preferIPv4Stack=true问题

《使用easyconnect之后,maven无法使用,原来需要配置-Djava.net.preferIPv4Stack=true问题》:本文主要介绍使用easyconnect之后,maven无法... 目录使用easGWowCy connect之后,maven无法使用,原来需要配置-DJava.net.pr

在.NET平台使用C#为PDF添加各种类型的表单域的方法

《在.NET平台使用C#为PDF添加各种类型的表单域的方法》在日常办公系统开发中,涉及PDF处理相关的开发时,生成可填写的PDF表单是一种常见需求,与静态PDF不同,带有**表单域的文档支持用户直接在... 目录引言使用 PdfTextBoxField 添加文本输入域使用 PdfComboBoxField

IntelliJ IDEA 中配置 Spring MVC 环境的详细步骤及问题解决

《IntelliJIDEA中配置SpringMVC环境的详细步骤及问题解决》:本文主要介绍IntelliJIDEA中配置SpringMVC环境的详细步骤及问题解决,本文分步骤结合实例给大... 目录步骤 1:创建 Maven Web 项目步骤 2:添加 Spring MVC 依赖1、保存后执行2、将新的依赖

如何解决Spring MVC中响应乱码问题

《如何解决SpringMVC中响应乱码问题》:本文主要介绍如何解决SpringMVC中响应乱码问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Spring MVC最新响应中乱码解决方式以前的解决办法这是比较通用的一种方法总结Spring MVC最新响应中乱码解

Spring MVC使用视图解析的问题解读

《SpringMVC使用视图解析的问题解读》:本文主要介绍SpringMVC使用视图解析的问题解读,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Spring MVC使用视图解析1. 会使用视图解析的情况2. 不会使用视图解析的情况总结Spring MVC使用视图

基于@RequestParam注解之Spring MVC参数绑定的利器

《基于@RequestParam注解之SpringMVC参数绑定的利器》:本文主要介绍基于@RequestParam注解之SpringMVC参数绑定的利器,具有很好的参考价值,希望对大家有所帮助... 目录@RequestParam注解:Spring MVC参数绑定的利器什么是@RequestParam?@