页面上的一个按钮不会调用后面的代码,其他按钮可以工作

时间:2016-01-12 18:31:42

标签: javascript c# html asp.net code-behind

页面上的每个按钮除了一个按钮外都有效。单击时,将显示确认框。当确认为真时,它什么都不做。其他按钮在页面上工作,所以我不确定为什么后面的代码没有被调用。

更新:我需要确认此人想要按下按钮,这就是我拥有“onclientclick”属性的原因。

这是不起作用的按钮:

<asp:Button ID="btnDeclineServices" runat="server" Text="Purge Scanned Image" UseSubmitBehavior="false"  CssClass="redinput" TabIndex="-1" OnClientClick="return confirmDeclineServices();" OnClick="btnDeclineServices_Click" style="cursor:pointer;"/>

这背后的代码叫做:

protected void btnDeclineServices_Click(object sender, EventArgs e)
{
    ...
}

这是onclientclick的Javascript函数:

function confirmDeclineServices() {
if (confirm('Are you sure you want this flyer set to Declined Services?')) {
    return true;
} else {
    return false;
}
}

当我按下按钮时,它会显示确认对话框,当我按下OK时,它什么都不做。

这非常令人困惑,因为它旁边的按钮确实有效:

<asp:Button ID="btnEnterFlyerData" runat="server" Text="Enter Flyer Data" UseSubmitBehavior="false" TabIndex="201" OnClick="btnEnterFlyerData_Click" style="cursor:pointer;" />

感谢您提供任何帮助。

2 个答案:

答案 0 :(得分:3)

这是一个简单快速的解决方法,如下所述。

您需要将ClientClick值更改为下面给出的内容。我假设当confirmDeclineServices方法返回false时,您不想执行代码隐藏。

因此,如果用户确认为是,那么您将在ASP.Net中进行正常处理。现在,您始终从客户端单击方法返回,然后停止与此按钮连接的所有ASP.Net客户端处理。

OnClientClick="var go = confirmDeclineServices(); if(go === false) { return false;}"

当常规ASP.Net处理在客户端接管时,只有页面回发并执行代码隐藏。通过使用return语句,您将停止此过程。因此,当您希望按钮不回发时,只能使用return值。

更新1

让我更详细地解释一下。

我们假设您有一个带有标记的asp按钮,如下所示。它最终将在您的浏览器中使用下面第二个代码段中的html进行渲染。我正在讨论的ASP.Net客户端处理是调用此方法__doPostBack('btn1',''),ASP.Net在执行clientclick代码后执行。

因此,如果您返回clientclick,则ASP.Net方法不会执行,也不会发回。

ASP.Net按钮标记

   <asp:Button ID="btn1" runat="server" Text ="Button1"
    UseSubmitBehavior="false" OnClientClick="var x =1;"  OnClick="btn1_Click"/>

ASP.Net按钮呈现Html

<input type="button" name="btn1" value="Button1"
    onclick="var x =1;__doPostBack('btn1','')" id="btn1">

如果您将UseSubmitBehavior设置为true,那么原始代码应该有效,但您似乎正在使用UseSubmitBehavior = false。因此,更改此属性可能是您的另一个选项,但如果没有,那么只需使用我提供的原始修复。

答案 1 :(得分:-1)

看起来你的第一个按钮有OnClientClick =“return confirmDeclineServices();”,它应该在客户端浏览器上运行一些脚本。根据{{​​3}},该属性也可以选择标准的OnClick事件。

相关问题