无论页面控件如何,都要验证用户控件

时间:2014-09-22 05:42:34

标签: c# asp.net validation

我想在发生回发时验证我的用户控件。这是usercontrol希望验证的内容:

    public string Text
    {
        get
        {
            return DateTextBox.Text;
        }
        set
        {
            DateTextBox.Text = value;
        }
    }

Text属性的格式必须始终为“YYYY / MM / DD”。我希望用户将此控件添加到每个页面的任何位置,当用户提交任何按钮时,如果Text无效,则按钮提交事件不会引发。主要问题是我想要这个工作而不改变任何页面。我的意思是不检查Page.IsValid

之类的内容

2 个答案:

答案 0 :(得分:1)

尝试以下代码: -

 public string Text
        {
            get
            {
                return DateTextBox.Text;
            }
            set
            {
                try
               {
                    DateTime d = DateTime.ParseExact(value, "yyyy/MM/dd",CultureInfo.InvarientCulture);
                    DateTextBox.Text = value;
               }
               catch(Exception ex)
               {
                    //// Code when it does not match format.
               }
            }
    }

答案 1 :(得分:1)

您可以通过将ASP.Net验证控件添加到.ascx标记代码来实现此目的。

尝试添加以下代码

<asp:CompareValidator
    id="dateValidator" runat="server" 
    Type="Date"
    Operator="DataTypeCheck"
    ControlToValidate="DateTextBox" 
    ErrorMessage="Please enter a valid date.">
</asp:CompareValidator>
<asp:RequiredFieldValidator 
    ID="RequiredFieldValidator1" 
    ControlToValidate="DateTextBox" 
    runat="server" 
    ErrorMessage="Required!">
</asp:RequiredFieldValidator>

但是,此方法的问题是所有按钮(保存或提交)没有CauseValidation = False将尝试验证此TextBox。

要解决此问题,您需要

  1. 如果按钮位于用户控件中,则将ValidationGroup添加到所有控件(TextBox,Validation控件,按钮等)

  2. 如果页面中有按钮 向控件添加一个公共属性以保存ValidationGroup,并将此值分配给所有控件和需要验证的所有按钮。