ASP.NET MVC (六-1) Razor视图引擎

【ASP.NET MVC4】第五课:视图技术、输出辅助方法、Razor视图引擎、Razor语法、分部视图 知识点:视图概述、Razor视图引擎、Razor语法 1、视图概述 ASP.NET MVC 中视图的作用就是向用户提供界面。视图在得到模型(数据)后,将模型转换成为准备提供给用户的格式,这个过程分成检查由 Controller 输入的数据 及将内容转换成 HTML 格式两个部分(大部分 Action 返回给客户端的都是由 HTML 代码组成的 View )。 MVC 中视图引擎的理解 简单理解,就是能够支持对视图的解析。在ASP.NET MVC 中,视图引擎的作用就是把视图处理成浏览器能.. 阅读详情

视图引擎负责处理ASP.NET内容,并查找相关指令,将动态的内容插入到发送给浏览器的输出,而Razor是MVC框架视图引擎的名称。

准备示例项目

     使用Visual Studio 2013建立ASP.NET Web应用程序并命名为“Razor“,选择Empty(空)选项并勾选MVC复选框。

定义模型

    右键Models文件夹选择添加Class,命名为Product并打开编辑为如下内容:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace Razor.Models
{
    public class Product
    {
        public string Name { get; set; }
        public int IntProductID { get; set; }
        public string Description { get; set; }
        public string Category { get; set; }
        public decimal Price { get; set; }
    }
}

这和之前的文章中建立的Product类是一样的。

定义控制器

    在Controllers文件夹上右键选择添加空的控制器(MVC 5 Controller-Empty),命名为HomeController,打开并修改为如下内容:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using Razor.Models;

namespace Razor.Controllers
{
    public class HomeController : Controller
    {
        Product myproduct = new Product
        {
            Name = "Kayak",
            Price = 275M,
            IntProductID = 1,
            Category = "Watersports",
            Description = "A boat for one person"
        };
        // GET: Home
        public ActionResult Index()
        {
            return View(myproduct);
        }
    }
}

在控制器中创建了一个Product对象并对其属性进行填充同时还定义了一个Index动作方法,将Product对象传递给View。

创建视图

    在Home控制器的Index方法右键选择添加视图,视图名称为Index,模板为空,模型类型为Product。
其内容如下:

@model Razor.Models.Product
@{
    Layout=null;
    ViewBag.Title = "Index";
}
<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title>@ViewBag.Title</title>
</head>
<body>
    <h2>Index</h2>
    @Model.Name
</body>
</html>

使用模型对象

    从视图文件第一行开始

@model Razor.Models.Product

Razor语句以@字符开头。此例中 @model 语句声明该强类型视图模型的对象模型,这样就可以通过@Model来引用视图模型对象的方法。字段和属性。如@Model.Name 便可以引用Product对象的Name属性。
有意思的是声明模型要使用@model 小写字母开头,而使用模型对象却要使用@Model 大写字母开头。

使用布局

    Index视图另一个表达式是

@{
        Layout=null;
        ViewBag.Title = "Index";
    }

    这是一个Razor代码块 的例子,这种代码块允许在视图中包含C#代码,它以@{开始,以}结束。上述代码将Layout设置为null,它指明这个视图是自包含的、不采用布局模板,但当一个项目包含多个视图时,可能就需要一个布局模板来统一界面样式了。因此一下介绍如何建立并引用一个布局模板。

创建布局

    在解决方案资源管理器中右键Views文件夹选择添加新建项,打开对话框中选择 MVC 5 Layout Page(Razor)(MVC5布局页(Razor))模板,将文件命名为_BasicLayout.cshtml(第一个字符为下划线)。需要说明的Views文件夹中是下划线开头的文件为视图支持文件,不会返回给客户,而其他的视图文件可以返回给客户。_BasicLayout.cshtml打开并修改为如下内容:

<!DOCTYPE html>
<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title>@ViewBag.Title</title>
</head>
<body>
    <h1>Product Name</h1>
    <div>
        @RenderBody()
    </div>
    <h2>DoongBo@outlook.com</h2>
</body>
</html>

    布局是特殊形式的视图,@RenderBody() 方法调用会将动作方法指定的视图内容插入到布局标记里。另一个Razor表达式@ViewBag.Title 会在ViewBag中查找一个Title属性。

运用布局

    运用布局于视图,只要在视图文件中设置Layout属性的值即可。布局中包含了html的结构,所以引用布局后视图文件就可以删除这些内容,因此Index引用_BasciLayout.cshtml布局后内容改为如下:

@model Razor.Models.Product
@{
    ViewBag.Title = "Index";
    Layout = "~/Views/_BasciLayout.cshtml";
}
<h2>Index</h2>
@Model.Name

运行结果如下:

使用Layout属性指定视图的布局

使用共享布局

    如果想对每一个视图运用布局,则没有必要对每一个视图文件制定Layout属性,只要使用起始布局文件即可。
在渲染一个视图时MVC会寻找一个_ViewStart.cshtml的文件并把它作为视图文件的一部分。因此在Views文件夹下添加一个_ViewStart.cshtml文件并打开编辑为如下内容:

@{
    Layout = "~/Views/_BasciLayout.cshtml";
}

然后对需要采用_ViewStart.cshtml(第一个字符是下划线)指定的布局时,在视图文件中把Layout属性删掉即可。或者在创建视图时,选定Use a Layout page但不在下面的文本框中输入值,这样创建的视图就不会带有Layout属性而采用起始布局文件的指定内容。需要说明的是设置Layout=null 是指明本视图不采用布局,而不设置Layout 属性是指采用默认布局,两者是不同的。
    添加_ViewStart.cshtml之后对Index视图修改,删除其Layout属性后运行结果未变。修改后的Index.cshtml:

@model Razor.Models.Product
@{
    ViewBag.Title = "Index";
}
<h2>Index</h2>
@Model.Name

运行结果
视图文件使用起始布局文件,删除Layout属性运行结果

掌握Razor视图与控制器的交互:深入理解模型、指令和表达式 本文深入探讨了Razor视图与控制器的交互机制,重点关注了如何通过控制器传递模型数据到视图,以及视图如何利用Razor语法生成动态HTML响应。文章详细解释了@model指令的使用,以及如何通过视图导入文件简化视图中模型类型的引用。此外,还介绍了Razor语法中的各种表达式和指令,例如@using、@page、@addTagHelper等,并通过实例演示了如何在视图中使用这些表达式来实现复杂的逻辑。最后,文章通过示例展示了如何处理异步操作和异常捕获。 阅读详情

相关推荐

Razor视图转换器:ASP.NET MVC视图升级解决方案

ASP.NET MVC(Model-View-Controller)框架是一个用于构建动态网站的强大工具,它通过将应用程序分解为逻辑层来简化复杂性,从而使得每个部分都能独立工作。MVC模式的核心是将应用程序的不同部分分开:模型(Model)代表数据和业务逻辑,视图(View)提供用户界面,而控制器(Controller)则处理用户输入。这种分离不仅提高了可维护性,还促进了代码的可测试性和可重用性。

weixin_35751194的博客 712

ASP.NET MVC 3 : @model Razor中的新关键字

原文 :   ASP.NET MVC 3: New @model keyword in Razor两周之前我们发布了  ASP.NET MVC 3 Beta Release 。它支持即可实施部署,同时包含了很多不错的改进、增强。你可以在我的Beta版发布博客中看到ASP.NET MVC的3个新的特性摘要。可以阅读我之前ASP.NET MVC3预览版博客,学习到新特性之外的功能。这篇文章是“迷你文章”系列的第一章,我准备写的是关于ASP.NET MVC3 Beta版功能的详细描述。在今天的文章里,我将讲述

Sandy专栏 2万+

构建自定义用户登录表单的.NET C# MVC 4 Razor实战指南

创建一个用户友好的登录界面是任何需要用户认证的Web应用程序不可或缺的一步。在.NET C# MVC 4和Razor视图引擎的帮助下,开发者可以创建出既美观又功能强大的登录表单。本章深入探讨了如何设计和实现一个自定义用户登录表单,包括前端的界面设计和后端的逻辑实现。[Required(ErrorMessage = "用户名是必填项")][Display(Name = "用户名")]set;[Required(ErrorMessage = "密码是必填项")]

weixin_42603332的博客 1069

RazorPage语法介绍(二)

关于Razor Page的页面代码 我们来看看.cshtml文件的代码: @page @model RazorPagesMovie.Pages.Movies.IndexModel @{ ViewData["Title"] = "Index"; } <h2>Index</h2> <p> <a asp-page="Create">Create New</a> </p> <table class="table

你要明白,任何问题都不是孤立存在的,一定有人曾经遇到过,并且已经有更好的解决办法了,只是我还不知道。我不应该在黑暗中独自前行,去重新发明轮子,也许我的顿悟,只是别人的基本功!我应该要站在巨人的肩膀上,学习更成熟的经验和方法,然后再来解决这个问题 941

ASP.NET MVC 4.0与Razor视图引擎实战演示

ASP.NET MVC是一个轻量级的,由模型-视图-控制器(Model-View-Controller, MVC)设计模式驱动的Web开发框架。它将应用程序分成三个主要组件:模型(Model)、视图(View)和控制器(Controller),从而实现关注点分离,提高代码的可维护性和可测试性。模型(Model):代表了应用程序的数据结构,并包含了数据访问逻辑。视图(View):是用户界面的组成部分,主要负责展示模型中的数据。控制器(Controller)

weixin_42599558的博客 410

Matlab2024a安装教程

点击【下一步】。8.选择解压后的【MATLAB R2024a(64bit)】文件夹中【Crack】文件夹下的【licese.lic】,点击【打开】。

qq_64359046的博客 4793

RazorPage:PageModel:从Model到Razor的传值

创建和引入 在创建Razor页面时的时候,如果勾选: 就可以看到,在.cshtml文件中,有这样的代码: @model Demo.Pages.RegisterModel 在RegisterModel上F12转到定义,可以知道RegisterModel其实是一个类,继承自PageModel。 (演示:略) 注意其命名规范:类名同Page名,后加Model后缀 此外,注意: 组合之后的page可以有多个@model声明,但只能有一个@page声明 Handler Methods PageModel可以自

极客神殿 4390

PCB板质量测试和PCB板

PCB板质量测试和板厂

weixin_51370842的博客 514

mvc razor @html,【C# MVC 5】HTML Razor 的 视图model 的 属性设置

视图代码:设置图:效果图:-------------------------------以下是格式化模板------------------------------------------DataFormatString="{0:格式字符串}"在DataFormatString 中的 {0} 表示数据本身,而在冒号后面的格式字符串代表所们希望数据显示的格式;数字、货币格式:在指定的格式符号后可以指...

weixin_36378683的博客 382

从Low Byte解析DTC故障类型:系统开发中的诊断精细化实践

本文深入解析DTC故障诊断中Low Byte的关键作用,详细介绍了其在系统开发中的精细化应用实践。通过分析Low Byte的编码规则和故障分类设计,帮助开发者优化诊断数据库和解码方案,提升汽车电子系统的故障诊断效率和准确性。

weixin_28312391的博客 263

智能驾驶域控(ADCU)方案介绍

本文主要对智能驾驶域控(ADCU)方案相关知识进行总结,以加深理解,及方便后续查漏补缺。

liuxu324的博客 1570

ASP.NET MVC Razor视图引擎

本篇文章我们一起来讨论ASP.NET MVC框架中的Razor视图引擎。主要包含以下内容: 1. Razor简介 2. Razor语法 3. 布局页(Layout)Razor简介Razor是微软在ASP.NET MVC3中加入的新的视图引擎,由于Razor简单易用并且功能强大,迅速得到了大家的认可。但是,为了兼容以前的代码,之前的ASPX视图引擎(或称为Web Forms 视图引擎)还可

朱登凯的专栏 2743

使用Python下载ECMWF的ERA-5数据

一、注册账号 [官网]https://www.ecmwf.int/ 二、登录后获取下载key https://cds.climate.copernicus.eu/api-how-to 如图右侧红色框中的内容复制保存为TXT文件,并重命名为“.cdsapirc”,注意前面有点,保存在 C:\Users\username\.cdsapirc,(WINDOWS系统),username指当前电脑登录账户。 三、安装cdsapi库 以pycharm为例: 在pycharm中依次打开:File>setting

wise_sun的博客 7701

Asp.net MVC 3 之 Razor 视图引擎

    Asp.net MVC 3 中引入了一个新的View Engine: Razor。使用Razor不需要学习新的语言,也更容易将动态代码与HTML结合,抛却了这样的标记,使用一个神奇的@号,就能搞定一切,就像JQuery中的$号一般神奇,而且能够给我们留下更干净的HTML代码。相比Aspx,在VS2010中,Razor更加智能,现在写一个对Model的类型声明终于可以靠语法提示完成了。     在View的第一行键入  @model WebApplication1.Models.   这里就会有智能

Dove's Notes On Programming 4796

OpenClaw人人养虾:接入Synology Chat

Synology Chat 是群晖 NAS(Network Attached Storage,网络附属存储)内置的即时通讯应用。

王国平的博客 777

2015年高教社杯全国大学生数学建模竞赛 A 题:《太阳影子定位》真题解析与 MATLAB 解决方案

🏆 本文已收录于专栏:《滚雪球学数学建模(含历年真题)》,持续更新最新及历年数学建模竞赛资料,每篇内容力求做到“问题讲透、模型讲清、代码可用、论文可参考”,帮助你从零开始逐步建立完整的数学建模知识体系。

**My Coding Family** 1356

ASP.NET MVC Razor 视图引擎

上篇博文介绍了一下Razor的基本语法,那今天看下Razor视图怎么布局吧! Question 网站为啥要布局? 说道布局了那么网站为什么要布局呢?不布局有什么坏处呢?好今天开始咱先说一下为什么要布局? 首先,没有使用布局时,每个页面都存在大量的重复代码比如head top logo menu bottom 等等。 缺点: 1. 代码冗余      ---> 刚才已经提到

冰冻三尺,非一日之寒! 5241

电气论文实现:前推回代在IEEE33节点中的潮流计算实现(matlab,python)

本文首先介绍了前推回代的原理。然后基于IEEE33节点算例,分别用python和matlab运用前推回代进行了潮流计算。

总裁余(余登武)博客 8607

ASP.Net MVC——Razor视图引擎

在MVC3.0版本的时候,微软终于引入了第二种模板引擎: Razor 。在这之前,我们一直在使用WebForm时代沿留下来的ASPX引擎 Razor在减少代码冗余、增强代码可读性和Visual Studio智能感知方面,都有着突出的优势。

梵高先生 2139

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

ASP.NET的另一个视图引擎——Razor

一、什么是Razor?     要是你知道什么是ASPX,那我就告诉你:Razor是和ASPX 一样的另一种视图引擎。说到视图就明白了很多吧。既然都为视图引擎,都是MS的东西,两个视图引擎,一前一后,肯定有区别。那么接下来让我们来认识一下Razor吧。    首先,Razor是作为一种后起的视图模板被ASP.NET MVC3使用。    这就暴露了Razor的一个重要信息:界面设计灵活,比a

王勇霞 信息技术提高班九期 2172

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

[Asp.net MVC]Asp.net MVC5系列——Razor语法

目录 概念 Razor语法 总结 系列文章 [Asp.net MVC]Asp.net MVC5系列——第一个项目 [Asp.net MVC]Asp.net MVC5系列——添加视图 [Asp.net MVC]Asp.net MVC5系列——添加模型 [Asp.net MVC]Asp.net MVC5系列——从控制器访问模型中的数据 [Asp.n

Litt_J的专栏 2597

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

【ASP.NET MVC】Razor语法和Razor混编

=@==Html.Partial(“PartialPage”, “这里显示传给PartialPage页面的参数”)它可以用于将一个控制器的Action的结果嵌入到当前视图中,从而实现视图的复用和模块化。2.2.View视图文件的后缀是cshtml,并不是HTML页,而是cs文件。2.1.View视图文件cshtml,在View中可以写入各种HTML标签。// Html.Partial 返回的是字符串,放在这里,行内代码。在页中的指定位置,按一定的参数,嵌入并展示另一个页面的内容。

qq_42222127的博客 1778

ASP.NET MVC 3:Razor视图引擎下显式和隐式代码块

处作(一) http://weblogs.asp.net/scottgu/archive/2010/12/16/asp-net-mvc-3-implicit-and-explicit-code-nuggets-with-razor.aspx(原文网址) 这是我正在写的一系列关于ASP.NET MVC 3特性的帖子的一部分。 Razor视图引擎中的新关键字符@ (10月19日) Razor视图引擎下视图模板的嵌套布局 (10月22号) Razor视图引擎下服务器端注释 (11月12

huadupi的专栏 2836

ASP.NET MVC Razor视图引擎攻略

本文转载自:https://www.cnblogs.com/john-connor/archive/2012/05/08/2487200.html 作者:John-Connor 转载请注明该声明。--引子   看下面一段MVC 2.0的代码。 <%if (Model != null) {%> <p><%=Model%></p> <...

wangchaoqi1985的博客 254

ASP.NET MVC 最好的视图引擎是什么?

在http://ASP.NETCore MVC应用程序中,视图引擎(view engine)负责处理发送给客户端的内容。MVC框架中默认的视图引擎称为Razor,用来为HTML文件添加注释说明并将这些动态内容插入发送给浏览器的输出中。 关于在具体语境中如何理解Razor,参见表5-1。 表5-1 在具体语境中理解Razor 表5-2列出了本章要完成的操作。 5.1 准备示例项目 为了演示Razor是怎样工作的,首先创建一个http://ASP.NETCore Web Applicati..

人邮异步社区 612

在razor视图引擎中转义@字符

我正在使用Razor作为视图引擎创建一个示例ASP.NET MVC 3站点。 剃须刀语法以@字符开头,例如@RenderBody() 。 如果我在cshtml页面上写@test,它会给我解析错

p15097962069的博客 3030
上一篇: ASP.NET MVC 5 (五)c#的lambda表达式、LinQ和Async异步处理
下一篇: ASP.NET MVC 5 (六-2) 使用Razor表达式
DoongBo
博客等级 码龄10年 25粉丝 15原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值