验证用户控件,而不考虑页面控件
本文关键字:控件 不考虑 用户 验证 | 更新日期: 2023-09-27 18:23:47
每当发生回发时,我都要验证我的用户控件。这是我想要验证的用户控制愿望中的属性:
public string Text
{
get
{
return DateTextBox.Text;
}
set
{
DateTextBox.Text = value;
}
}
Text
属性必须始终具有类似"YYYY/MM/DD"的格式。我希望无论用户在哪里将此控件添加到每个页面,当用户提交任何按钮时,如果Text
无效,则按钮提交事件不会引发。主要的问题是,我希望这个作品不改变任何页面。我的意思是不检查Page.IsValid
之类的东西。
您可以通过将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添加到所有控件(文本框、验证控件、按钮等)
如果页面中有按钮向控件添加一个公共属性以保存ValidationGroup,并将该值分配给所有需要验证的控件和按钮。
尝试以下代码:-
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.
}
}
}