zoukankan      html  css  js  c++  java
  • 为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,一步一步达到渐进升级的过程。

  • 相关阅读:
    System.arraycopy()的用法?
    Java当中“+=”和“=+”的区别
    jsp FN 标签库的使用方法
    手作编辑画面处理
    mpfu 位编辑处理?
    5/14 自动跟新 位数编集 百分号添加 手作部品。
    jsp 4-14 知识总结
    jstl split 分割字符串?
    aws vpc 知识总结(助理级)
    典型的软件自动化测试框架
  • 原文地址:https://www.cnblogs.com/JustRun1983/p/3231563.html
Copyright © 2011-2022 走看看