ASP.NET应用程序对每个请求执行完整页面重新加载

时间:2016-07-28 14:50:57

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

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

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

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

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

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

1 个答案:

答案 0 :(得分:3)

@Html.ActionLink只是一种辅助方法,可以创建一个指向特定控制器和操作的URL的链接(因此您不必在任何地方对URL进行硬编码。)

它产生的链接与其他链接非常相​​似:

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

所以预计点击它应该会在浏览器中加载该页面,即使它是您已经在的页面。 (就像你一遍又一遍地点击stackoverflow标志 - 它会继续重新加载同一页面。)

奇怪的是它 在Firefox中重新加载。你确定它不仅仅是加载速度快吗?

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

尝试this link了解您实际尝试做的事情。

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

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

然后有各种各样的JavaScript库,比如AngularJs,可以为你自动化。但是我建议让你自己的第一个测试用例正常工作,这样你就可以看到它是如何发生的,然后继续进行其他工作。