为什么JS调用click按钮后,IE不会刷新页面? - c#

在ASP.Net页面上,我仅遇到IE问题。这是说明。

在页面上,有两个按钮和一个标签。第一个按钮可见,并在click事件上调用JS函数。此JS函数调用第二个按钮的click函数。第二个按钮在click事件上具有C€事件处理程序。 C#事件处理程序可编辑标签。

在Firefox中:单击后正确编辑标签。
在IE(8)中:尽管C€事件处理程序已正确命中,但标签未编辑。

另外,我观察到,在IE中,单击JS按钮后两次调用了Page_Load事件:
Page_Load
button2_OnClick =>更改标签文本
Page_Load =>标签文本被重置:(

在Firefox中,Page_Load仅被调用一次。

我的问题是:如何在单击JS按钮后像Firefox一样使IE正确刷新页面?

以下是示例测试代码:

1)页面ASPX

<head runat="server">
    <title></title>
    <script type="text/javascript">
        function button1Click(sender, args) {
            var button2 = document.getElementById("button2");
            button2.click();
        }
    </script>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:Button runat="server" ID="button1" Text="Click-me!" OnClientClick="button1Click();" />
        <asp:Button runat="server" ID="button2" Text="Second" OnClick="button2_OnClick" style="display:none" />
        <p />
        <asp:Label runat="server" ID="label1" Text="Init" />
    </div>
    </form>
</body>
</html>

2)C#代码隐藏:

public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {

    }

    protected void button2_OnClick(object sender, EventArgs e)
    {
        label1.Text = "Changed";
    }
}

参考方案

呈现按钮时,其ID将不是button1或button2。可能类似于ctl001_button1。因此,您的JavaScript将无法正常工作。在ASP.NET 4中,可以使用分配的ClientID覆盖此行为。

    <asp:Button runat="server" ID="button1" Text="Click-me!" 
           OnClientClick="button1Click();" ClientIDMode="Static" />
    <asp:Button runat="server" ID="button2" Text="Second" 
           OnClick="button2_OnClick" style="display:none" ClientIDMode="Static" />

顺便说一句,这暗示了ASP.NET Winforms的主要问题-欺骗开发人员以为Web是一个连接的环境。

默认情况下,当您单击<asp:Button />元素时实际发生的是调用了回发。即您的浏览器将请求发送到服务器以请求新页面。它发送一个称为ViewState的东西,这是服务器如何知道您已完成什么以及要呈现什么的方式。没有这样处理的“事件”。

与Mootools Scriptmanager Ajax Asp.net发生冲突? - c#

我正在尝试不同的方法来使这项工作成功,但是没有成功。我正在尝试将mootools与asp.net应用程序集成。我只想用它为我的网站添加一些效果。我也使用更新面板,scriptmanager,因为不希望有完整的回发。在控制台上引发错误TypeError:clientID.startsWith不是函数,并且在进行更新时brwoser reset...。这是整个代…

Div单击与单选按钮相同吗? - php

有没有一种方法可以使div上的click事件与表单环境中的单选按钮相同?我只希望下面的div提交值,单选按钮很丑代码输出如下:<input id="radio-2011-06-08" value="2011-06-08" type="radio" name="radio_date&#…

将python scikit学习模型导出到pmml - python

我想将python scikit-learn模型导出到PMML。哪个python软件包最合适?我阅读了有关Augustus的内容,但是我无法使用scikit-learn模型找到任何示例。 python大神给出的解决方案 SkLearn2PMML是 JPMML-SkLearn命令行应用程序周围的薄包装。有关受支持的Scikit-Learn Estimator和…

如何使用PHP从动态输入字段捕获数组值? - javascript

我正在编写一个在线时间跟踪网页,允许用户将学习时间输入该系统。用户将首先输入名称,然后根据日期输入学习时间。一天中可能会有多个学习时间。以下是我第一页的编码,<head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"…

SOAPFaultException部署在Tomcat上时,但在GlassFish中工作正常 - java

朋友们,我一直在尝试很多,阅读了很多论坛,但无法理解为什么出现此问题。我使用契约优先方法创建了一个Jax-WS WebService。创建WSDL和XSD,然后使用wsimport工具生成其余工件,为SEI提供实现。将WebService应用程序部署到Eclipse Helios中的GlassFish(Glassfish适配器和Eclipse中安装的插件)。…