I have a webform with two custom validators:

* One to validate that a string is a date. I don’t care what format, so long as it’s parseable.
* Another to ensure that one date is equal to or greater than another. I just couldn’t get the compare validator to play nice with any date format.

```asp
<asp:TextBox ID="txtResourceStartDate" runat="server"
    CssClass="textBox mandatory dateField" />
<asp:CustomValidator ID="valResourceStartDateIsDate" runat="server"
    ControlToValidate="txtResourceStartDate" Display="None"
    ErrorMessage="Start date must be a valid date"
    OnServerValidate="Date_ServerValidate" />

<asp:TextBox ID="txtResourceEndDate" runat="server"
    CssClass="textBox mandatory dateField" />
<asp:CustomValidator ID="valResourceEndDateIsDate" runat="server"
    ControlToValidate="txtResourceEndDate" Display="None"
    ErrorMessage="End date must be a valid date"
    OnServerValidate="Date_ServerValidate" />

<asp:CustomValidator Display="None" Text="" ID="valForStartEndDate" runat="server"
    OnServerValidate="ValidateStartEndDate"
    ErrorMessage="Last day must be greater than or equal to first day" />

```

```asp
protected void Date_ServerValidate(object source, ServerValidateEventArgs args)
{
    DateTime outDate;
    args.IsValid = DateTime.TryParse(args.Value, out outDate);
}

protected void ValidateStartEndDate(object sender, ServerValidateEventArgs e)
{
    e.IsValid = DateTime.Parse(txtResourceEndDate.Text) >=
                DateTime.Parse(txtResourceStartDate.Text);
}

```

The problem is that the `ValidateStartEndDate` validator is firing before the `Date_ServerValidate` validator, so if the date is not valid, a format exception is thrown on `DateTime.Parse`. Obviously this validator could check for a valid date before parsing, but I’d really prefer to have a discrete validator with an appropriate message.

So the question is this: what determines the sequence with which the validators fire? Unless I’m missing something, this is not declared at the tag level.