【问题标题】:Why does google chrome do a full page reload on postback?为什么谷歌浏览器在回发时会重新加载整页?
【发布时间】:2010-09-27 03:20:50
【问题描述】:

我正在创建我的第一个 Asp.Net 工具,但遇到了一个小问题。

目前,我正在对进行一些服务器端计算的 buttonclick 进行回发。然后,服务器端代码使用这些计算来更改 div 的内容。在 IE 和 Firefox 中,当回发发生时,div 会按预期更新。

但是,在 chrome 中,所有回发都会完全刷新整个页面。是什么导致了这种情况,有没有办法解决这种行为?

更新: 客户端我有以下..

    <asp:Button ID="Button2" Style="float: right" runat="server" 
OnClick="S_ButtonClick" Text="Calculate" />

调用一个方法总结成这样。

protected void S_ButtonClick(object sender, EventArgs e) 
    {
        //Code parsing values from textboxes ect.

        //Do Some Calculations

        //Output Results
        outputDiv.InnerHtml = "<h2>Foo</h2><br/>";
        outputDiv.InnerHtml += "Bar: " + calcValue;

    }

有可能当这个回发(如果我理解正确的话)发生时,它仍然在 Firefox 和 ie 中完全重新加载,但它没有显示出来。这有效地掩盖了回发。但是,当我在 chrome 中进行测试时,任何回发都会在重新加载状态之前使页面完全空白。希望这能明确我的要求。另外,我的 C#/.Net 使用可能有一些缺陷,我愿意在这些方面使用 cmets。

【问题讨论】:

  • AFAIK,除非您使用 AJAX,否则这是回发的预期行为。你在使用任何 AJAX 库吗?
  • 您需要准确地提供有关您正在做什么的更多信息。通常,回发确实会导致整页刷新,所以听起来您在谈论 ASP.NET AJAX,而不是传统的回发。
  • 我认为您在谈论回调,而不是回发。如果您使用更新面板并且在页面上运行任何 javascript,您可能需要确保它在 Chrome 中运行。有时,损坏的客户端验证器会导致更新面板出现问题,从而导致回发而不是回调。
  • 啊,抽象出实际发送到浏览器的内容的语言的乐趣...
  • 你确定在 IE 和 Firefox 中页面没有完全刷新???

标签: c# asp.net google-chrome


【解决方案1】:

据我了解,ASP.NET AJAX 部分回发仅支持 ASP.NET 可以检测到的浏览器。我最后一次听到(不久前)是firefox 和Safari,而不是Chrome。在这种情况下,它会使用完整的回发。

要实现页面更新,我真的建议您切换到 jQuery 或其他广泛支持的 AJAX 工具包。 (如果有问题,Microsoft 会支持 jQuery)这涉及到更多的管道,但并不多。

【讨论】:

  • 那么这是否允许我在单击复选框之类的东西时执行必要的状态更新和服务器端代码执行,而无需执行回发?
  • 正确。从 javascript 中,您可以使用“$.ajax”函数调用服务器上的页面。该页面将在服务器上执行,您可以获取响应(html 或其他)并将其附加到 div 或页面上的任何内容。 docs.jquery.com/Tutorials
  • 我发布了我的解决方案作为答案,但我会接受你的,因为它看起来更合适。
猜你喜欢
  • 2014-03-27
  • 1970-01-01
  • 2016-01-17
  • 1970-01-01
  • 1970-01-01
  • 2013-04-16
  • 2013-04-29
  • 1970-01-01
相关资源
最近更新 更多