ASP.NET MVC 学习笔记-2.Razor语法
1. 表达式
表达式必须跟在“@”符号之后,
2. 代码块
代码块必须位于“@{}”中,并且每行代码必须以“;”结尾。代码块中定义的变量可能会被同一个域中的其他块使用。比如,定义在视图顶部的变量可以被同一视图中的代码块和代码段访问。
3. 布局
Razor通过layouts保持网页外观布局的一致性。布局模板包含基本的标签,并可以指定渲染视图内容的位置。比如
基本布局文件(_Layout.cshtml)
<!DOCTYPE Html>
<html lang=”en”>
<head>
<mete charset=”utf-8”/>
<title>@View.Title</title>
</head>
<body>
<div class=”header”>
@RenderSection(“Header”);
</div>
@RenderBody()
<div class=”footer”>
@RenderSection(“Footer”);
</div>
</body>
</html>
布局页面定义完成后,其他视图页面就可以引用该布局文件,比如
@{Layout=”~/_Layout.cshtml”;}
@section Header {
<h1>Page Header Content</h1>
}
@section Footer {
Copyright @DateTime.Now.Year
}
<div class=”main”>
Page Main Content
</div>
使用Razor布局和内容视图将页面组合在一起,展示了一个完整的页面,其中的每一块定义了页面的不同部分。
4. 部分视图
使用布局通过重用部分HTML代码做到网站外观的一致性,但是有一些情况,布局则无法实现,比如,网页上的一部分信息需要多次重复出现(格式一致,显示内容不一致),例如,购物网站页面上的交易列表,只显示交易名称、当前价格和摘要信息。
ASP.NET MVC通过部分视图的技术实现了这个需求。
首先,先定义部分视图,并保存为单独的视图文件(例如,~/Views/Shared/Acution.cshtml)。
@model Auction
<div class=”auction”>
<a href=”@Model.Url”><img src=”@Model.ImageUrl”</a>
<h4><a href=”@Model.Url”>@Model.Title</a></h4>
<p>Current Price :@Model.CurrentPrice</p>
</div>
然后,在需要使用该部分视图的位置,调用ASP.NET MVC自带的HTML方法调用它,比如:
@model IEnumerable<Auction> <h2>Search Result</h2>
@foreach(var auction in Model){
@Html.Partial(“Auction”,auction);
}
其中,Html.Partial()方法的第一个参数“Auction”是部分视图名称,并需要包含扩展名。第二个参数则是传递到部分视图的数据模型。第二个参数不是必须的,如果不传递,系统会默认将调用该部分视图的数据模型进行传递,比如,本例中的IEnumerable<Auction>。
由此可见,使用部分视图能够降低网页中的代码重复和编码复杂性,增强可读性。
5. 显示数据
MVC架构分为三层,模型、视图和控制器。三层之间彼此分离且协同工作,其中,就需要控制器担当“协调”的角色,视图将请求交给控制器,控制器对模型进行操作,并将操作结果反馈给视图,视图对模型的数据进行呈现。
控制器和视图之间的数据传递方式,ASP.NET MVC 提供了以下几种实现方式:
1) ViewData
ViewData实现方式,它的实现类似于Dictionary的操作,使得数据传递变得非常简单。
在控制器方法中使用类似于ViewData[“DataKey”]=dataValue进行赋值,在视图文件中,使用 var dataValue=ViewData[“DataKey”]获取数据。
2) ViewBag
ViewBag的使用类型与C#中的dynamic类型,可以直接操作其属性,比如,
控制器方法:ViewBag.DataProperty=dataValue;
视图文件:var dataValue=ViewBag.DataProperty;
3) Model属性
Model属性属于强类型,并且是动态类型,可以在视图上输入”@Model”就可以直接访问。
6. HTMLHelper和URLHelper
Web请求的目标就是向用户发送HTML代码,在Razor语法中,ASP.NET MVC有两个重要的帮助类来生成对应的HTML代码,分别是HTMLHelper和URLHelper。HTMLHelper类用来生成HTML标记代码,URLHelper用来生成URL地址链接。
<img src=’@Url.Content(“~/Content/images/header.jps”)’/>
@Html.ActionLink(“Home”,”Index”,”Home”)
渲染得到的HMTL代码为:
<img src=’/vdir/Content/images/header.jpg’/>
<a href=”/vdir/Home/Index”>HomePage</a>
ASP.NET MVC 学习笔记-2.Razor语法的更多相关文章
- ASP.NET MVC 学习笔记-2.Razor语法 ASP.NET MVC 学习笔记-1.ASP.NET MVC 基础 反射的具体应用 策略模式的具体应用 责任链模式的具体应用 ServiceStack.Redis订阅发布服务的调用 C#读取XML文件的基类实现
ASP.NET MVC 学习笔记-2.Razor语法 1. 表达式 表达式必须跟在“@”符号之后, 2. 代码块 代码块必须位于“@{}”中,并且每行代码必须以“: ...
- MVC学习笔记2 - Razor语法
Razor 同时支持 C# (C sharp) 和 VB (Visual Basic). C# 的主要 Razor 语法规则 Razor 代码封装于 @{ ... } 中 行内表达式(变量和函数)以 ...
- ASP.NET MVC 学习笔记-7.自定义配置信息 ASP.NET MVC 学习笔记-6.异步控制器 ASP.NET MVC 学习笔记-5.Controller与View的数据传递 ASP.NET MVC 学习笔记-4.ASP.NET MVC中Ajax的应用 ASP.NET MVC 学习笔记-3.面向对象设计原则
ASP.NET MVC 学习笔记-7.自定义配置信息 ASP.NET程序中的web.config文件中,在appSettings这个配置节中能够保存一些配置,比如, 1 <appSettin ...
- ASP.NET MVC学习笔记-----Filter2
ASP.NET MVC学习笔记-----Filter(2) 接上篇ASP.NET MVC学习笔记-----Filter(1) Action Filter Action Filter可以基于任何目的使用 ...
- ASP.NET MVC学习笔记-----Filter
ASP.NET MVC学习笔记-----Filter(1) Filter类型 接口 MVC的默认实现 Description Authorization IAuthorizationFilter Au ...
- ASP.NET MVC学习笔记-----Filter(2)
接上篇ASP.NET MVC学习笔记-----Filter(1) Action Filter Action Filter可以基于任何目的使用,它需要实现IActionFilter接口: public ...
- 【.NET-MVC】ASP.NET MVC学习笔记1-概述
第 1 篇:理解控制器和视图 MVC概述 MVC原理就是模型.视图.控制器的框架. (其实也是种思想,为了让前端.程序.数据分开,也是想实现低耦合.高内聚) MVC请求流程是:访问控制器,控制器来 ...
- ASP.NET MVC5 学习笔记-2 Razor
1. Razor @*注释*@ 你在用 @Request.Browser.Browser, 发送邮件给support@qq.com, 转义@@qq @{ var amounts = new List& ...
- ASP.NET MVC学习笔记(一) 从路由开始创建mvc
之前一篇写一半发现版本太老了,是基于mvc2的. 两本参考书编写的顺序各方面都不太一样.决定重新写一篇. 我这篇文章基于mvc5,vs2015 参考书:Will保哥的ASP.NET MVC4开发指南 ...
随机推荐
- win7安装Oracle 11g 详细教程
一.下载 可以去Oracle官网下载:http://www.oracle.com/technetwork/database/enterprise-edition/downloads/index.htm ...
- Stateful Future Transformation
As an async programming pattern, Future has been popular with many of our programmers across a wide ...
- Java开发瓶颈,Dubbo架构学习整理
作者:butterfly100 一. Dubbo诞生背景 随着互联网的发展和网站规模的扩大,系统架构也从单点的垂直结构往分布式服务架构演进,如下图所示: 单一应用架构:一个应用部署所有功能,此时简化C ...
- Android JNI 学习(七):Accessing Fields Api
一.GetFieldID jfieldIDGetFieldID(JNIEnv *env, jclass clazz, const char *name, const char *sig); 返回类的实 ...
- ruby-attr_accessor使用
ruby语法-attr_accessor方法使用 本文主要讲解下ruby下attr_accessor方法的使用. 示例1: class Person end person = Person.new p ...
- dubbo实用知识点总结(一)
1. dubbo基础架构 架构 特性 服务提供者 服务消费者 配置可以用dubbo.properties来替换 2. 注解配置 提供方(注意:serivce注解是dubbo的service) 消费者 ...
- AI - 概念(Concepts)
01 - AI.ML与DL的关系 从涵盖范围上来讲,人工智能(AI)大于机器学习(ML)大于深度学习(DL) 人工智能(AI):能够感知.推理.行动和适应的程序: 机器学习(ML):能够随着数据量的增 ...
- (转)db2top详解
原文:https://blog.csdn.net/lyjiau/article/details/47804001 https://www.ibm.com/support/knowledgecenter ...
- mysql 开发基础系列15 索引的设计和使用
一.概述 所有mysql 列类型都可以被索引,是提高select查询性能的最佳方法. 根据存储引擎可以定义每个表的最大索引数和最大索引长度,每种引擎对每个表至少支持16个索引,总索引长度至少为256字 ...
- 浅谈javascript-this关键字
前言 JavaScript中this变量是一个令人难以摸清的关键字,当初学习javascript的时候被这个this指向问题折腾的我是惨不忍睹,漏洞百出.一度想在后面的代码过程中放弃对this的使用, ...