我想在发生回发时验证我的用户控件。这是usercontrol希望验证的内容:
public string Text
{
get
{
return DateTextBox.Text;
}
set
{
DateTextBox.Text = value;
}
}
Text
属性的格式必须始终为“YYYY / MM / DD”。我希望用户将此控件添加到每个页面的任何位置,当用户提交任何按钮时,如果Text
无效,则按钮提交事件不会引发。主要问题是我想要这个工作而不改变任何页面。我的意思是不检查Page.IsValid
。
答案 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。
要解决此问题,您需要
如果按钮位于用户控件中,则将ValidationGroup添加到所有控件(TextBox,Validation控件,按钮等)
如果页面中有按钮 向控件添加一个公共属性以保存ValidationGroup,并将此值分配给所有控件和需要验证的所有按钮。