【问题标题】:Rendering an ASP.NET MVC view in a Razor layout refresh the whole site在 Razor 布局中呈现 ASP.NET MVC 视图会刷新整个站点
【发布时间】:2012-10-02 21:34:52
【问题描述】:

在 ASP.Net MVC 项目中,我使用 Razor 内置的 _layout.cshtml 和带有页眉和页脚的经典两列布局。这个想法是在布局的右栏中显示我的应用程序视图,并在不重复代码的情况下对整个站点保持一致的外观......

问题是每次我调用视图并使用@RenderBody() 将其内容呈现在我的布局右列中时,整个布局都会刷新。这是正常行为吗?

此 Razor 的布局概念中是否有任何内置机制来仅刷新呈现的视图内容而不是整个站点,还是我必须进行 jQuery Ajax 调用并用视图内容替换 div?

谢谢

艾蒂安

【问题讨论】:

    标签: jquery asp.net-mvc razor


    【解决方案1】:

    如果你想动态地切换你的内容,你必须通过 ajax 加载数据,然后替换你网站的右栏……Razor 没有“自动模式”来做到这一点。 =P

    我有一些项目使用这种“方法”。我将我的视图呈现为部分视图(在控制器中),然后我获取 html 并将其放在我想要的位置。

    【讨论】:

    • 是我还是这让整个布局对于像我这样试图不浪费资源的人来说有点无用?
    • 布局的点与母版页的点相同 - 使您无需剪切和粘贴存在于多个页面上的元素。
    【解决方案2】:

    MVC 有一个可以使用的内置 ajax 机制:

    http://msdn.microsoft.com/en-us/library/dd505086(v=vs.108).aspx

    根据我的经验,它只对非常简单的事情真正有用;我通常最终只使用 $.post()。

    【讨论】:

    • 同意!这最终会抓住你。
    【解决方案3】:

    你可以在调用该页面时使用 iframe 而不是 @RenderBody() @{ Layout = null;}

        <ul>
            <li class="LoadContent" data-url="http://api.jquery.com/not-selector/">Jquery-not-selector</li>
            <li class="LoadContent" data-url="http://api.jquery.com/contents/">Jquery-contents</li>
        </ul>
        <iframe src="" width="80%" height="600" id='frameDemo'></iframe> ​
    
    
      $(document).ready(function () {
            $('.LoadContent').click(function () {
                 $('#frameDemo').attr('src', $(this).data('url'));
            });
        });​
    

    demo

    【讨论】:

    • 你的url也需要改吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-22
    • 1970-01-01
    • 2011-08-24
    • 1970-01-01
    • 2011-07-12
    相关资源
    最近更新 更多