博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
为Asp.net MVC中的RenderSection设置默认内容
阅读量:6641 次
发布时间:2019-06-25

本文共 1590 字,大约阅读时间需要 5 分钟。

1. RenderSection的简单介绍

Asp.net MVC中提供了RenderSection方法,这样就能够在Layout中定义一些区块,这些区块留给使用Layout的view来实现

比如我们定义的Layout如下, 定义了一个”Footer”的section, 把这个section留给各个view去填充。

                Sample Layout</head>                 
@RenderBody()
@RenderSection("Footer")

 在使用该Layout的view中,可以这样来填充“Footer” section.

@{    Layout = "MyLayout.cshtml";}

Main Content!

@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
defaultContents) { if (webPage.IsSectionDefined(name)) { return webPage.RenderSection(name); } return defaultContents(null); }}

在Layout中使用该方法,定义默认section内容

@this.RenderSection("Jquery", @)   ………

在新开发的页面上,覆盖默认section, 使用新的版本的Jquery

@section Jquery{    }

这样就大功告成了,新版本的Jquery就能够应用到新页面中了,以后再慢慢修改旧的页面,也迁移到新版本的Jquery, 最后就可以移除掉整个Jquery section,一步一步达到渐进升级的过程。

本文转自JustRun博客园博客,原文链接:http://www.cnblogs.com/JustRun1983/p/3231563.html,如需转载请自行联系原作者

你可能感兴趣的文章
前端开发规范
查看>>
(SPOJ687,后缀数组)
查看>>
30岁前不要去在乎的29件事
查看>>
数据调用方法
查看>>
在Hadoop中ResourceManager是干什么的?
查看>>
RF开发关键字(四)
查看>>
【HDOJ】3234 Exclusive-OR
查看>>
vue 点击图片显示大图
查看>>
Hadoop基础-Protocol Buffers串行化与反串行化
查看>>
Hadoop生态圈-phoenix(HBase)的索引配置
查看>>
LitJson使用方法
查看>>
Windows 7上安装配置TensorFlow-GPU运算环境
查看>>
【VS2013编译DirectX Tutorials时遇到的错误】FXC : error X3501: 'main': entrypoint not found
查看>>
npm上传vue组件
查看>>
在网页内预览pdf
查看>>
加载MySQL、Oracle、SQL Server 2000、SQL Server 2005及以上版本 的加载数据库驱动程序...
查看>>
WebGL学习笔记四点一
查看>>
java-switch语句
查看>>
[Android Security] APK自我保护 - DEX/APK校验
查看>>
[web前端] yarn和npm命令使用
查看>>