【问题标题】:custom validator not working自定义验证器不起作用
【发布时间】:2011-06-17 14:53:38
【问题描述】:

我在一个文本框上应用了一个自定义验证器,其值由日历更改。我已经进行了服务器端验证以检查它是否是过去的日期。单击提交按钮时会触发验证器。 args.IsValid 值设置为 false,但代码仍然进入了提交按钮的点击事件,而不是显示错误消息。 请帮忙。

aspx.cs file
protected void CustomValidatorIssueDate_ServerValidate(object source, ServerValidateEventArgs args)
    {
        string nowString = DateTime.Now.ToString("MM/dd/yyyy");
        DateTime now = Convert.ToDateTime(nowString);
        DateTime issueDate = Convert.ToDateTime(args.Value);
        if (issueDate.CompareTo(now) > 0)
        {
            args.IsValid = true;
        }
        else
        {
            args.IsValid = false;
        }
    }

aspx file

<asp:TextBox ID="TextBoxIssueDate" runat="server" Width="214px"></asp:TextBox>
                    <asp:CustomValidator runat="server" ControlToValidate="TextBoxIssueDate" 
                        ErrorMessage="Issue Date cannot be past date" 
                        onservervalidate="CustomValidatorIssueDate_ServerValidate" 
                        ID="CustomValidatorIssueDate" Display="Dynamic" SetFocusOnError="True" ></asp:CustomValidator>

【问题讨论】:

  • 是否可以提供您所指的任何代码?
  • 您是否在检查 args.IsValid 并在没有检查的情况下做某事?或者如果 IsValid == false,您是否希望它绕过该方法?
  • 请贴出你说的代码,验证器控件的aspx和文本框会有用
  • @Jamie 如果在 customValidator 方法中将 args.IsValid 设置为 false,我希望它绕过按钮的 onclick 事件。

标签: c#


【解决方案1】:

您的 onclick 事件处理程序不会被简单地通过将 IsValid 设置为 false 来绕过。

您需要在事件处理程序中检查 IsValid。

if(Model.IsValid)
{
}

(或类似的东西)。

【讨论】:

    猜你喜欢
    • 2013-04-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多