Razor视图引擎介绍

ASPX 和 Razor

在asp.net mvc 模式中,视图引擎有两类: ASPX(ASP.NET) 和 Razor

1.aspx引擎

如果选择了aspx引擎,那么就是asp.net引擎。

那么什么是asp.net?
1)是微软.net框架的主要部分
2)是一种服务器段脚本技术:可以使(嵌入网页中的脚本)由服务器执行
3)是asp和.net的技术结合。提供基于组件、事件驱动的可编程网络表单,降低了编程复杂度
4)asp.net是一种部署在IIS中的程序

什么是asp.net文件?
1)asp.net文件类似于html文件,但是可以包含HTML、XML以及脚本
2)asp.net文件中的脚本在服务器上运行
3)asp.net文件的文件后缀是“.aspx

asp.net如何工作?
当浏览器请求html文件时,服务器会返回该文件;
当浏览器请求asp.net文件时,iis会把该请求传递给服务器上的asp.net 引擎,
asp.net引擎会逐步读取该文件,并执行文件中的脚本,
最后,asp.net文件会以纯HTML的形式返回给浏览器

2.Razor 引擎

什么是Razor?
Razor是一种允许向网页中嵌入基于服务器的代码(Vb和C#)的标记语法,
是一种服务器代码和HTML代码混写的代码模板,类似于没有后置代码的.aspx文件。
Razor英文含义:剃须刀,在这里可以引申为让代码更简单、整洁的意思

Razor支持的文件类型?
Razor支持两种文件类型,分别是 .cshtml和.vbhtml;
.cshtml的服务器代码使用了C#语法
.vbhtml的服务器代码使用了vb.net语法

工作原理?
当网页被写入浏览器时,基于服务器的代码能够动态创建内容。
在网页加载时,服务器在向浏览器返回页面之前,会执行页面内的基于服务器的代码。
由于是在服务器上运行,这种代码能执行复杂的任务,比如数据库访问

razor 语法?
1)@符号是razor中的重要符号,被定义为Razor代码块的开始符号;
2)使用 @{代码片段} 这种格式来定义一段代码
3)Razor支持代码混写,在Razor代码块中插入html,在html中插入Razro语句

<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>
layout页面中的@RenderBody()

layout页面即母版页可以理解成网站的框架,通用层面的东西,而@RenderBody相当于一个占位符,
一个网站有可能有多个模块,即有不同功能的网页,每个功能的网页的index页面都是用同一个layout页面,
这样在加载页面的时候遇到@RenderBody()就会加载对应模块的index.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>
aspx和razor引擎 比较

相同点:
都可以实现向HTML中插入服务器代码的技术;
执行顺序相同;
基于ASP.NET

Razor好处:

  1. Razror是为web应用程序的创建而单独设计
    2)它拥有传统的asp.net 标记能力,但较aspx语法更简单,更容易使用和学习

如下,同一段代码用ASPX引擎和Razor引擎,Razor引擎格式的更简单:

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

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

功能:生成有数据绑定的Html标签。

为什么会出现?
许多时候我们会遇到如下场景在写一个编辑数据的页面时,我们通常会写如下代码。于是我们思考,对于这种代码我们是不是也可以用一个Helper来自动绑定数据呢?这当然是可以的,ASP.NET MVC提供了一个HtmlHelper用于生成有数据绑定的Html标签。看,这个类没有什么特别的吧。就是辅助我们使用Html进行编程的一个工具类。在MVC模式中,在View中,我们可以直接通过这个工具类(HtmlHelper)来读取数据实体值,给Html标签赋值。

在View中是不是都得使用HtmlHlper?
主要是需要数据绑定的Html标签。比如表单与Models的绑定,所以在MVC中表单和链接还是推荐用HtmlHelper,其他的可以根据需要使用在Html和HtmlHelper中进行选择。
HtmlHelper方法汇总,点击这里查看

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值