为什么在验证后我的表单不会提交回来?

8
我有一个带有多个验证摘要的asp.net页面,其中设置了ShowMessageBox="True"和几个验证器。 我遇到了这样一种情况:当验证失败时,验证摘要会正确显示,但接下来的点击通常会触发页面回发的操作却不起作用。 所以步骤如下:
  1. 单击触发验证的按钮。
  2. 验证失败并显示具有错误消息的消息框。
  3. 单击另一个不进行验证但应触发回发操作的按钮,什么也没发生
  4. 再次单击与步骤3相同的按钮,则正常发生回发。
这种行为可能是由什么引起的?
编辑:验证是按以下方式完成的。在asp页面中:
<asp:Button runat="server" id="btn" onClientClick="return DoValidation();" />

在JavaScript中:

function DoValidation() {
    if (!Page_ClientValidate('group1'))
        return false;
    if (!Page_ClientValidate('group2'))
        return false;

    return true;
}

你可能需要发布一些代码才能得到一个好的答案。 - Brian Driscoll
尝试将CausesValidation属性设置为false,用于第二个按钮? - IrishChieftain
我曾尝试将其设置为false,但得到了相同的结果。这个页面相当复杂,我希望有人可能已经遇到过类似的情况。 - Mykroft
1个回答

18

在这个问题的编辑中描述的验证方式中,经过我的努力和仔细使用调试器,我最终发现,当自动执行验证时,如果失败了,将设置一个布尔值阻止页面的下一个PostBack进行。我认为这是由于自动执行验证而不是像我这样显式地执行验证所导致的。将上述JavaScript更改为以下内容:

function DoValidation() {
    if (!Page_ClientValidate('group1')) {
        Page_BlockSubmit = false;
        return false;
    }
    if (!Page_ClientValidate('group2')) {
        Page_BlockSubmit = false;
        return false;
    }

    return true;
}

解决了问题。希望这能帮助下一个犯同样错误的人。


调试器为我节省了时间。谢谢! - Kevin Shea
我希望我一小时前看到了你的答案! - clamchoda
太好了,我找到了它! - vintastic

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接