【问题标题】:Loading Bundles One Time in MVC4 Project在 MVC4 项目中一次性加载捆绑包
【发布时间】:2013-10-10 23:56:24
【问题描述】:

对于一个包含 _layout.cshtml 并加载了包的 MVC 项目,每次加载视图时单击都会加载布局和包。是否有任何内置机制可用于仅在最初加载这些内容,以便 RenderBody() 仅加载我还没有的内容(不重新加载布局)?这是局部派进来的地方吗?

如果部分是处理它的正确方法,这是否意味着我需要每个控制器方法有两个版本(一个有布局,一个没有)?这里的任何提示都会很棒。

【问题讨论】:

    标签: asp.net-mvc asp.net-mvc-3 asp.net-mvc-4


    【解决方案1】:

    据我所知,没有内置机制可以一次加载布局页面。如果您希望仅一次加载该布局,则可以使用客户端方法执行此操作,以便服务器更轻巧。这是步骤。创建 MVC 4 应用程序。

    在您的 _Layout.cshtml 中添加一个 div 来保存您要加载的 html 页面。在我的例子中是“pageholder”

     <div id="body">
                <div id="pageholder">
                    @RenderSection("featured", required: false)
                    <section class="content-wrapper main-content clear-fix">
                    @RenderBody()
                    </section>
                </div>
     </div>
    

    将此脚本添加到您的 _Layout.cshtml

    @Scripts.Render("~/Scripts/common.js")
    <script type="text/javascript">
                $(document).ready(function() {
                    $('.pagelink').click(function() {
                        var settings = {
                            'url': $(this).attr('url'),
                            'type': 'GET',
                            'dataType':'html'
                        };
                        get_html(settings);
                    });
                });    
    </script>
    

    修改您的菜单链接

    <nav>
        <ul id="menu">
         <li>@Html.ActionLink("Home", "Index", "Home")</li>
         <li><a href="#" class="pagelink" url="/home/about">About</a></li>
         <li> <a href="#" class="pagelink" url="/home/contact">Contact</a></li>
          </ul>
    </nav>
    

    添加js文件并命名为common.js并放入此内容

    function get_html(settings) {
            settings.success = function(data) {
                $('#pageholder').empty().html(data);
            };
        settings.error = function (xhr, ajaxOptions, thrownError) {
            alert(xhr.statusText);
        };
        $.ajax(settings);
    }
    

    设置布局 = null;关于和联系人视图

    @{
        ViewBag.Title = "About";
        Layout = null;
    }
    

    运行应用程序并测试“关于”和“联系人”页面

    【讨论】:

      猜你喜欢
      • 2012-06-21
      • 1970-01-01
      • 1970-01-01
      • 2012-08-15
      • 2012-03-28
      • 1970-01-01
      • 1970-01-01
      • 2011-11-07
      • 2021-04-23
      相关资源
      最近更新 更多