MVC之路随记2--Razor基础
2024-09-14 11:45:18
1.概述:Razor是mvc 3.0新扩展的内容,是默认的视图引擎,引擎一词可理解为Web Form中<% %>中的变形,但是Razor更加干净,轻量级,简单.使用了该引擎后,文件的后缀名将是cshtml(c#)或vbhtml(vb).
2.基本使用方法
@* 代码表达式 *@
<h2>hello @ViewBag.Msg</h2>
@* 显式方式输出 *@
@{
string str = "hello world";
}
<h1>@(str).model</h1>
@*识别邮件地址*@
<span>fang@163.com</span>
@*有歧义时要用显式输出格式*@
<span>stringLeng@(str.Length)</span>
@*输出'@'符号时*@
<span>@@孙猴子@@</span> @*遇上Html编码时,Razor会自动看为字符串,以此防止XSS攻击
,但是最好的方式是用'@Ajac.JavaScriptStringEncode'方法对用户输入进行编码来防止注入*@
@{
string str2 = "<script>alert('xss hack')</script>";
}
<h2>@str2</h2>
@*若要当成HTML输出亦可*@
<h1>@Html.Raw(str2)</h1> @*代码块自动识别结尾*@
@foreach(LogOnModel l in Model)
{
<p>@l.UserName</p>
}
@*混合代码和纯文本*@
@if (true)
{
<text>This a plain text</text>
}
@if (true)
{
@:This is a plain text!
}
3.深入理解使用
3.1布局
Razor的布局方式使多个视图能够保持一样的外观
MVC 3.0+会自动生成一个_ViewStart视图文件,他会先于所有视图运行,里面就定义了布局文件
@{
Layout = "~/Views/Shared/_Layout.cshtml";
}
打开布局文件可以看到
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title>@ViewBag.Title</title>
<link href="@Url.Content("~/Content/Site.css")" rel="stylesheet" type="text/css" />
<script src="@Url.Content("~/Scripts/jquery-1.4.4.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 id="footer">
@if (IsSectionDefined("footer"))
{
//渲染页脚
RenderSection("footer");
}
else {
<span>This is the default footer.</span>
}
</div>
</div>
</div>
</body>
</html>
其中@RenderBody()放置视图文件中的内容,若是有页脚则放置在RenderSection("footer"),这两个方法说白了就是一个占位符,对于默认的视图是没有页脚的,我们可以为视图加上页脚,如下代码
@RenderSection("Footer",false);
其中false是指不一定非要加页脚不可.他有两个重载,若是没设置第二个参数,或者第二个参数设置为true,则在视图中必须设置对应的渲染内容@section
视图中使用
@section Footer{
This is A <strong> Footer</strong>
}
说到布局,就还要说个@RenderPage("/url.."),他在布局文件中使用,可以指定渲染的页面到布局中来.
@RenderPage("~/Views/Home/About.cshtml");
最新文章
- Linux基础介绍【第二篇】
- 如何快速开发SPA应用
- Orchard教程索引页
- Java static 静态代码块执行分析
- 13.首先,编写一个类ChongZai,该类中有3个重载的方法void print();其次, 再编写一个主类来测试ChongZai类的功能。
- 使用PreTranslateMessage替代钩子函数处理键盘消息
- Core Java Volume I — 3.8. Control Flow
- Flume FileChannel优化(扩展)实践指南
- web项目的两个创建形式website和webapplication
- 文本相似度算法——空间向量模型的余弦算法和TF-IDF
- C#主键类型选择
- 关于JQuery获取宽度和高度在chrome和IE下的不同
- JS构造函数模式
- [JetBrains注册] 利用教育邮箱注册pycharm,idea等产品教程。
- sudo命令详解
- [物理学与PDEs]第2章第1节 理想流体力学方程组 1.2 理想流体力学方程组
- chrome插件学习笔记
- IRP小结 0x01 IRP &; IO_STACK_LOCATION(结合WRK理解)
- Linux知识(6)----卸载安装的包
- 10.0-uC/OS-III任务管理