【问题标题】:Postback Issue With Objects In ASP.NET C#ASP.NET C# 中对象的回发问题
【发布时间】:2013-10-19 18:47:24
【问题描述】:

我的 ASP.NET 项目中的 Web 表单上有一些按钮。最终用户必须像使用计算器一样与这些按钮进行交互。我的问题是,每当最终用户单击按钮时,页面都会因为回发而刷新。我试图像这样关闭回发:

if (!Page.IsPostBack)
{
   protected void btn7_Click(object sender, EventArgs e)
    {                       
        const string stringNumber7 = "7";
        var text = txtNumber.Text;
        text += stringNumber7;
        txtNumber.Text = text;
        CheckMaxLength(); 
    }
}

但是点击事件不会触发。我尝试过使用图像、图像按钮、图像映射。我也无法从这些对象中得到我想要的结果。我希望能够停止回发,但仍然让我的按钮单击事件像 Windows 应用程序中那样触发。我看到一些论坛使用更新面板进行讨论。我不确定如何正确实现更新面板。我不熟悉 AJAX 控件。

有谁知道我可以如何使用更新面板来完成我想要做的事情?或者如何停止回发并仍然触发服务器端代码?

【问题讨论】:

  • 回发意味着客户端回发到服务器,所以如果你想处理服务器上的按钮点击事件,你必须这样做。如果您想使用 javascript 处理客户端的点击事件,请使用 html-input type=button 并处理 onclick 事件。
  • 如果不想回发,可以使用 JavaScript 或 jQuery。
  • 我认为您有一个基本的误解...在单击按钮后调用服务器端代码的唯一方法是通过 PostBack。这是根本。如果您想在屏幕上保留值,则需要将它们放在保持状态的控件中,或者(如果没有),您需要重建这些服务器端。
  • @andleer 感谢您的评论。您能否详细说明“维持状态的控制”?您还指的是哪个控件?

标签: c# asp.net ajax click postback


【解决方案1】:

如果 botton 正在调用本地/客户端 JavaScript,则在将取消 PostBack 的控制事件属性中返回 false。

<button onclick="MyMethod();return false;">Click Me</button>

如果您使用的是服务器端控件:

<asp:button runat="server" OnClientClick="MyMethod();return false;" />

【讨论】:

  • “MyMethod()”必须是单独的方法,还是可以使用按钮的点击事件?
  • 如果您在单击按钮时调用了 JavaScript,您的描述中并没有明确说明。您说该按钮导致回发...您希望它运行什么代码?如果该代码是客户端,则需要通过返回 false 来取消 PostBack。如果该代码是服务器端的,您只能通过 PostBack 访问它。如果它是客户端,您的按钮需要某种调用代码的方法。您可以使用 onclick 属性或使用诸如 jQuery 之类的库来连接单击事件。
猜你喜欢
  • 1970-01-01
  • 2023-03-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-08
  • 2011-08-11
  • 2021-10-14
  • 2011-09-18
相关资源
最近更新 更多