为Asp.net MVC中的RenderSection设置默认内容
1. RenderSection的简单介绍
Asp.net MVC中提供了RenderSection方法,这样就能够在Layout中定义一些区块,这些区块留给使用Layout的view来实现
比如我们定义的Layout如下, 定义了一个”Footer”的section, 把这个section留给各个view去填充。
<!DOCTYPE html>
<html>
<head>
<title>Sample Layout</head>
<body>
<div>@RenderBody()</div>
<footer>@RenderSection("Footer")</footer>
</body>
</html>
在使用该Layout的view中,可以这样来填充“Footer” section.
@{
Layout = "MyLayout.cshtml";
}
<h1>Main Content!</h1>
@section Footer {
This is the footer.
}
RenderSection方法还有一个参数, 如果使用RenderSection(“Footer”, false) ,则表示,这个section Footer,view中不是必须要实现。
2,在Layout中定义一个具有默认值的Section
问题的由来是这样的,项目中使用到了Jquery 1.4.4, 想升级到Jquery到更高的版本,但是由于已有的一些js代码只能兼容Jquery1.4.4, 所以没有办法简单的把Jquery的引用在Layout中直接替换到更高版本。
这个时候,我想到了section, 不如在Layout中定义一个Jquery的section, 新开发的页面在这个section里面使用更高版本的Jquery, 而原有的页面就还是用旧版本的.
这个section应该有个默认值,也就是就的Jquery引用,新的view中只要替换就可以了。
无奈,MVC中默认的RenderSection没有提供这种实现,于是,通过扩展RenderSection方法,实现了该功能。
3, 具体的实现代码
定义一个静态类WebPageBaseExtension, 扩展RenderSection方法
public static class WebPageBaseExtension
{
public static HelperResult RenderSection(this WebPageBase webPage, string name, Func<dynamic, HelperResult> defaultContents)
{
if (webPage.IsSectionDefined(name))
{
return webPage.RenderSection(name);
}
return defaultContents(null);
}
}
在Layout中使用该方法,定义默认section内容
<head>
@this.RenderSection("Jquery", @<script src="@Url.Content("~/Scripts/jquery-1.4.4.min.js")" type="text/javascript"></script>)
<script src="@Url.Content("~/Scripts/jquery-ui.min.js")" type="text/javascript"></script>
………
</head>
在新开发的页面上,覆盖默认section, 使用新的版本的Jquery
@section Jquery
{
<script src="@Url.Content("~/Scripts/jquery-1.9.min.js")" type="text/javascript"></script>
}
这样就大功告成了,新版本的Jquery就能够应用到新页面中了,以后再慢慢修改旧的页面,也迁移到新版本的Jquery, 最后就可以移除掉整个Jquery section,一步一步达到渐进升级的过程。
为Asp.net MVC中的RenderSection设置默认内容的更多相关文章
- ASP.NET MVC中的Session设置
最近在ASP.NET MVC项目中碰到这样的情况:在一个controller中设置了Session,但在另一个controller的构造函数中无法获取该Session,会报"System.N ...
- ASP.NET MVC中MaxLength特性设置无效
在ASP.NET MVC项目中,给某个Model打上了MaxLength特性如下: public class SomeClass { [MaxLength(16, ErrorMessage = &qu ...
- ASP.NET MVC中为DropDownListFor设置选中项的方法
在MVC中,当涉及到强类型编辑页,如果有select元素,需要根据当前Model的某个属性值,让Select的某项选中.本篇只整理思路,不涉及完整代码. □ 思路 往前台视图传的类型是List< ...
- MVC中给TextBoxFor设置默认值和属性
例如:(特别注意在设置初始值的时候 Value 中的V要大写) @Html.TextBoxFor(model => model.CustomerCode, new { Value=" ...
- ASP.NET MVC中设置跨域
ASP.NET MVC中设置跨域 1.什么是跨域请求 js禁止向不是当前域名的网站发起一次ajax请求,即使成功respone了数据,但是你的js仍然会报错.这是JS的同源策略限制,JS控制的并不是我 ...
- js基础 js自执行函数、调用递归函数、圆括号运算符、函数声明的提升 js 布尔值 ASP.NET MVC中设置跨域
js基础 目录 javascript基础 ESMAScript数据类型 DOM JS常用方法 回到顶部 javascript基础 常说的js包括三个部分:dom(文档document).bom(浏览器 ...
- 关于 ASP.NET MVC 中的视图生成
在 ASP.NET MVC 中,我们将前端的呈现划分为三个独立的部分来实现,Controller 用来控制用户的操作,View 用来控制呈现的内容,Model 用来表示处理的数据. 从控制器到视图 通 ...
- 关于ASP.NET MVC中的视图生成
在 ASP.NET MVC 中,我们将前端的呈现划分为三个独立的部分来实现,Controller 用来控制用户的操作,View 用来控制呈现的内容,Model 用来表示处理的数据. 从控制器到视图 ...
- ASP.NET MVC 中的视图生成
关于 ASP.NET MVC 中的视图生成 在 ASP.NET MVC 中,我们将前端的呈现划分为三个独立的部分来实现,Controller 用来控制用户的操作,View 用来控制呈现的内容,Mode ...
随机推荐
- Team Foundation Server简介
对于任何一个软件开发团队而言,成功的一个重要因素在于成员之间.成员与首先使用软件的用户之间有很好的沟通. Team Foundation Server是一个独立的服务器产品,逻辑上,由下列两层组成,这 ...
- [Tool] PowerDesigner
一般项目的生命周期: 1.需求分析 2.需求规格说明书 3.总体设计 4.详细设计 5.编码实现 6.测试,试运行. 7.验收 8.后期维护 PowerDesigner 可以把软件生命周期的每一个阶段 ...
- Jquery核心函数
在Jquery中,所有的DOM对象都将封装成Jquery对象,而且只有Jquery对象才能使用Jquery方法或者属性来执行相应的操作. 所以Jquery提供了一个可以将DOM对象封装成Jquery对 ...
- ADO.NET基础01
数据库中数据的导入导出 在使用一些数据库时,很多时候都要将文件导入导出到指定的文件夹中: 数据的导入导出就必须用到stream函数,这就必须用到Using System.IO的命名空间: **在数 ...
- 缺少google api密钥,因此chromium的部分功能将无法使用”的解决办法
使用Chromium时会遇到 "缺少google api密钥,因此chromium的部分功能将无法使用"提示,google了一下 setx Google_API_K ...
- 【原创】本地通过IIS设置开发的localhost网站的域名改为个性域名方法
效果图: 操作步骤如下: 第一步: 在本地IIS上新建个网站,如下图所示 第二步,修改host文件 加配置节点如下图所示 第三步,在vs里面找到你的web项目, ...
- 不可或缺 Windows Native (5) - C 语言: 数组
[源码下载] 不可或缺 Windows Native (5) - C 语言: 数组 作者:webabcd 介绍不可或缺 Windows Native 之 C 语言 数组 示例cArray.h #ifn ...
- Interlocked.CompareExchange
class SourceManager { private SourceManager() { } private static SourceManager sourceManager; public ...
- [moka同学笔记]yii2场景的使用(摘录)
前半部分为自己使用的过程,下边为转载的,具体地址见:http://blog.sina.com.cn/s/blog_88a65c1b0101j717.html 1.在model中 public func ...
- python 任意新闻正文提取
在github上搜到一个正文提取程序,测试了一下基本可以对现在大多数大型新闻网站进行提取 后续我会分析一下这个程序的源码 使用非常简单 如下 # -*- coding: utf-8 -*- impor ...