MVC之路随记2--Razor基础
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");
MVC之路随记2--Razor基础的更多相关文章
- MVC之路随记3--Html辅助方法
概述:MVC中使用@Html.MethodName 来做很多Html的事情,简化了开发工程量,使用方便,并且易于理解 详细方法: 1.表单 <form action="/Home/Se ...
- MVC之路随记1--Filter的应用
功能:MVC提供过滤器Filter,使开发者不用复杂的实现AOP而直接用Filter实现同样的功能. 实现:1.定义一个类实现ActionFilterAttribute,重载借口中的方法后在Contr ...
- Razor基础语法
原文:Razor基础语法 一.介绍 Razor是ASP.NET MVC视图引擎的代号,支持.cshtml和.vbhtml两种模板文件,符号@标记服务端代码的开始,比以前asp.net的< ...
- Razor基础语法简介
http://blog.csdn.net/pasic/article/details/7072340 Razor的出现,使页面看起更加简洁,Razor的页面后缀为:.cshtml Razor基础语法: ...
- 我的前端MVC之路
大约十几个月前,了解到时下前端MVC之火爆,同事推荐我了解一下angular.当时也不是特别在意,只是稍稍阅读了一遍官方文档,并尝试了文档上的例子.其实当时也颇有震惊之感的,原来代码还可以这么写!看完 ...
- (转)MVC语法-@helpers和@functions(Razor内定义函数)
(转)MVC语法-@helpers和@functions(Razor内定义函数) 转自:http://www.mikesdotnetting.com/Article/173/The-Differenc ...
- 【原创翻译】认识MVC设计模式:web应用开发的基础(实际编码篇)
原文地址:http://www.larryullman.com/2009/10/15/understanding-mvc-part-3/ 全系列INDEX [原创翻译]认识MVC设计模式:web应用开 ...
- MVC框架的插件与拦截器基础
自制MVC框架的插件与拦截器基础 上篇谈到我自己写的MVC框架,接下来讲讲插件及拦截器! 在处理一些通用的逻辑最好把它封装一个插件或者拦截器,以便日后可以直接拿过来直接使用.在我的框架中可以通过继承以 ...
- [随记][asp.net基础]Page_Load和OnLoad
标题:[随记][asp.net基础]Page_Load和OnLoad 一.前言 东西好久不用.不想,就会忘,所以没办法,只好记下来. 二.正文 aspx页面加载的时候会自动执行Page_Load,也会 ...
随机推荐
- UIautomator Python测试
#!/usr/bin/env python # -*- coding: utf-8 -*- import unittest from mock import MagicMock, patch impo ...
- Sprint1(第二天11.15)
Sprint1(第二天11.15) Sprint1第一阶段 1.类名:软件工程-第一阶段 2.时间:11.14-11.23 3.选题内容:web版-餐厅到店点餐系统 4.团队博客地址: http:// ...
- Callable与Future的介绍
http://www.cnblogs.com/whgw/archive/2011/09/28/2194760.html
- POJ 3278 Catch That Cow
注:本人英语很渣,题目大意大多来自百度~=0= 题目大意 农民约翰需要抓住他的牛,他和他的牛在一条直线上(估计是一维生物),约翰在N (0 ≤ N ≤ 100,000)处,他的牛在 K (0 ≤ K ...
- ASCII表
ASCII(American Standard Code for Information Interchange,美国信息交换标准代码)是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧 ...
- windows C input 注意
windows控制台输入,默认是以文本模式打开,即使重定向输入,文本模式不变,所以输入时无法读到cr,因为windows已经把crlf转换成单个lf. 如果freopen("CON" ...
- 项目导入myeclipse10后jsp报错问题
电脑重装系统装了个myeclipse10,当项目导入时发现jsp报错,原本以为是jdk版本问题,在网上找了资料才知道原来是myeclipse10相对之前版本对js的检查更加严格了.可以用以下方法解决: ...
- Jquery做点击选中与鼠标移上特效
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- Visual Studio 2015 新建MVC项目 Package Manager Console不能使用 (HRESULT: 0x80131500)
Visual studio 2015 突然新建不了MVC项目,报出错误: HRESULT: 0x80131500 在折腾了很长时间,最后在Github上看到这样一个贴 地址:https://githu ...
- [css]零散的重构知识
1.不建议这样写 font-family:"微软雅黑"; 建议 font-family:Microsoft YaHei; 因为有些网站不兼容中文(GB2312)的字符