«CustomValidator» будет срабатывать только тогда, когда TextBox не пуст. Если вы хотите проверить, является ли он пустым или нет, используйте «RequiredField Validator» вместе с «CustomValidator». Кроме того, исправление «IsValid», предложенное «Брайаном», абсолютно корректно.
Edit1:
Только что проверил, что мы можем использовать атрибут ValidateEmptyText = "true" для пользовательского валидатора, чтобы избежать обязательного валидатора поля, например, ниже
<asp:CustomValidator ID="CustomValidator1" runat="server" ControlToValidate="txtTotalCost" ValidateEmptyText="true"
ErrorMessage="Total cost must be filled out" ClientValidationFunction="ValidateTotalCost"
ToolTip="Total cost must be filled out">*</asp:CustomValidator>
Надеюсь, это поможет !!