【问题标题】:ASP.NET application performing full page reload on each request [closed]ASP.NET 应用程序对每个请求执行整页重新加载 [关闭]
【发布时间】:2016-07-28 14:50:57
【问题描述】:

我希望我的 Web 应用程序的行为类似于“单页应用程序”,因为在每次页面加载之间整个屏幕不会变白,而是按照以下方式仅呈现页面的新部分:

<div id="mainSection">
    <!-- Render individual pages -->
    @RenderBody()
</div>

以及我的_Layout.cshtml 页面上的链接:

<li>@Html.ActionLink("Some Page", "Index", "Page")</li>

现在还有一点是该应用程序似乎仅在 Firefox 中正常运行。该应用程序不会在 Firefox 中执行完整页面重新加载,但在 Chrome 或 IE 中会执行。应用程序正在 IIS 上运行。

【问题讨论】:

  • 不知道你所说的“新部分”是什么意思。您要发送什么样的请求?
  • 我知道你怎么能混淆部分和渲染方法来只更新页面的一部分。但是,您需要使用 Ajax 调用来更新特定部分,而无需重新加载整个页面。搜索ASP.NET MVC Ajax,你会发现很多关于如何实现部分页面加载和其他内容的文章和演练。

标签: c# asp.net asp.net-mvc web-applications


【解决方案1】:

@Html.ActionLink 只是一个帮助方法,它创建一个带有指向特定控制器和操作的 URL 的链接(因此您不必在任何地方硬编码 URL。)

它会生成一个与其他链接非常相​​似的链接:

<a href="/Page/Index">Some page</a>

所以点击它应该会在浏览器中加载该页面,即使它是您已经在的页面。 (例如,如果您一遍又一遍地点击 stackoverflow 徽标 - 它会不断重新加载同一页面。)

奇怪的是它不是在 Firefox 中进行重新加载。你确定它不只是加载速度非常快吗?


当您的一个视图使用布局时,布局中的@RenderBody() 会告诉它在布局中的何处呈现您的视图。这只是指定您的页面如何适应布局,但这并不意味着唯一要重新加载的部分。


尝试this link 了解您真正想要做的事情。

  • 在 JavaScript 中,对控制器进行 Ajax 调用
  • 控制器呈现部分视图(没有布局的视图)并返回 HTML 作为 Ajax 调用的结果
  • 您的 JavaScript 获取 Ajax 调用的结果,并将某些 &lt;div&gt; 的内容替换为新的 HTML。

这样页面永远不会刷新,而只会更新其中的一部分。

还有各种各样的 JavaScript 库,例如 AngularJs,可以为您自动执行这些操作。但是我建议让你自己的第一个测试用例工作,这样你就可以在继续做其他事情之前了解它是如何发生的。

【讨论】:

  • 是的,Firefox 的行为符合预期。它不会重新加载页眉、导航栏或页脚,只会重新加载页面的内部部分。
猜你喜欢
  • 2010-12-27
  • 2011-09-09
  • 2021-08-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多