【问题标题】:stop refreshing _navigation partial view in mvc layout or load the _navigation only 1 time停止刷新 mvc 布局中的 _navigation 部分视图或仅加载 _navigation 1 次
【发布时间】:2019-03-19 09:35:34
【问题描述】:

我有一个标准的 MVC 布局,带有导航(滑动导航)。

页眉和页脚是部分视图并在视图中引用。每次我单击导航链接时,总页面都会刷新并且缺少活动的导航栏位置(放置)。我怎样才能最好地解决这个问题?欢迎任何建议。 我的 _layout.cshtml 是..

    <!--Wrapper-->     
        <div id="wrapper">

        <!--Navigation--> 

@Html.Partial("_Navigation")    

<!--Page wraper-->    
            <div id="page-wrapper" class="gray-bg">

                @Html.Partial("_TopNavbar")

                <!-- Main view-->    
                @RenderBody()    

                <!-- Footer -->
                @Html.Partial("_Footer")            
</div>
            <!-- End page wrapper-->

        </div>

and i tried the load method like follows..
     $(document).ready(function () {
        $("a.stop_refresh").click(function (e) 
    {
     e.preventDefault(); var url = $(this).attr("href"); $('#page-wrapper').load(url); 
        });

【问题讨论】:

  • 您的导航链接可能是&lt;a href="..page2"&gt; - 如果您不想加载整个页面,那么您需要将这些更改为 ajax 请求以加载内容 - 这听起来不像你想在这个阶段做。或者,您的页面需要向导航组件指示它是哪个页面并相应地更新导航视图。

标签: c# jquery ajax asp.net-mvc razor


【解决方案1】:

您可以将导航链接作为 ajax 调用。作为响应服务器将向您发送生成的 HTML - 然后您将使用它(使用 jquery / javascript)替换您尝试重新加载的页面的旧 HTML 部分。 为了获得更好的效果,将某种加载器添加到正在刷新/重新加载的页面部分(它应该作为单击时的第一个事件开始,并在收到来自 ajax 调用的响应时结束)。
但这对大多数页面来说工作量太大,而且由于某些元素可能会发生变化,因此您在上面花费的代码量/时间在大多数情况下并不是一个可行的选择。

【讨论】:

  • 请探索我在那个 ajax call() 中做了什么?为什么我不能像加载路径(../controler/index.cshtm)一样。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-10-31
相关资源
最近更新 更多