0

我正在使用带有框架 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,但我不希望它与按钮产生冲突

为什么会发生这种情况,我该如何解决?

谢谢...

4

1 回答 1

1

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

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

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

于 2013-05-06T01:00:13.473 回答