asp.net,requiredfieldvalidator禁用后面的代码事件

时间:2013-05-05 22:50:23

标签: asp.net

我正在使用带有框架3.5和Ajax Control Toolkit .NET 3.5的Visual Studio 2010。

我在asp.net网络表单网站上工作。

在表格上我有这个:文本框,图像按钮,按钮,日历和requiredfieldvalidator:

<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
    <p>
        <br />
        <asp:ToolkitScriptManager ID="ToolkitScriptManager1" runat="server">
</asp:ToolkitScriptManager>

<asp:Label id="Label3" runat="server">Date</asp:Label>
                        <asp:textbox id="txtInitialDate" runat="server" Width="75px" MaxLength="10"></asp:textbox>

                            <asp:ImageButton ID="imgBegin" 
            ImageUrl="~/images/Icon1.jpeg" runat="server"
                                AlternateText="" Height="24px" Width="24px"   />

        <asp:CalendarExtender ID="CalendarExtender1" runat="server"
        TargetControlID="txtInitialDate"
        PopupPosition="BottomLeft" PopupButtonID="imgBegin"
        >
        </asp:CalendarExtender>

        <asp:requiredfieldvalidator id="RequiredFieldValidator1" runat="server" ErrorMessage="*" ControlToValidate="txtInitialDate"
                            Display="Dynamic"></asp:requiredfieldvalidator>

<asp:button id="Button2" runat="server" Text="Send" onclick="Button2_Click"></asp:button>
</asp:Content>
代码背后的代码:

override protected void OnInit(EventArgs e)
{
Button2.Attributes.Add("onclick", "javascript:" + Button2.ClientID + ".disabled=true;"     + "javascript:" + Button2.ClientID + ".value='Processing.';" + this.GetPostBackEventReference(Button2) + ";");
base.OnInit(e);
}


protected void Button2_Click(object sender, EventArgs e)
{
string a = "some_value";
}

此处的互动是用户点击ImageButton,日历显示,用户点击日期然后点击按钮。

问题:

如果我运行网站并首先点击ImageButton并选择一个日期,那么当点击该按钮时不会触发任何事件。

但是如果我评论验证器的代码:

<asp:requiredfieldvalidator id="RequiredFieldValidator1" runat="server" ErrorMessage="*" ControlToValidate="txtInitialDate"
                            Display="Dynamic"></asp:requiredfieldvalidator>

然后正确触发事件。

我希望能够使用requiredfieldvalidator,但我不希望它与按钮产生冲突

为什么会发生这种情况?如何解决这个问题?

...谢谢

1 个答案:

答案 0 :(得分:1)

在图像按钮标记中使用CausesValidation=False

<asp:ImageButton ID="imgBegin" CausesValidation="False" ImageUrl="~/images/Icon1.jpeg" runat="server"  Height="24px" Width="24px" />

您也可以在标记中添加Button2的javascript(而不是OnInit代码隐藏)。只需在OnclientClick标记

中使用Button2属性即可