大家好我知道asp.net提供服务器端验证控件,它有自己的内置逻辑,所以我想在这里问我们可以扩展内置逻辑,我的意思是假设我们使用比较验证器比较两个文件,此时它将根据内置逻辑进行验证,但我想为比较验证器添加一些代码,这是可能的。
根据我在asp.net中的知识,每个控件都被视为具有数据和代码的类,因此根据继承或扩展,我们可以在验证控件中添加一些代码吗?
答案 0 :(得分:4)
看起来你需要使用 CustomValidator
您可以使用自定义函数来定义控件何时通过验证。在这种情况下可能是这样的。
void ServerValidation (object source, ServerValidateEventArgs args)
{
args.IsValid = //Define your validation here
}
答案 1 :(得分:2)
CustomValidator是一个选项。如果您希望实现类似于现有验证器的验证器,您可以简单地从它派生并覆盖所有必要的方法。但您应该寻找的最重要的方法是 EvaluateIsValid 。
当您的逻辑更可能是唯一的时,CustomValidator会更好。如果你想在多个地方使用逻辑,我建议使用继承。它允许您根据需要将逻辑封装在类库中,而CustomValidator则不会。
答案 2 :(得分:1)
在你的标记中:
<asp:TextBox id="Text1" runat="server" />
<asp:CustomValidator id="CustomValidator1"
ControlToValidate="Text1"
Display="Static"
ErrorMessage="Not an even number!"
ForeColor="green"
Font-Names="verdana"
Font-Size="10pt"
OnServerValidate="ServerValidation"
runat="server"/>
<asp:Button id="Button1"
Text="Validate"
OnClick="ValidateBtn_OnClick"
runat="server"/>
在服务器端代码中:
void ValidateBtn_OnClick(object sender, EventArgs e)
{
// Display whether the page passed validation.
if (Page.IsValid)
{
Message.Text = "Page is valid.";
}
else
{
Message.Text = "Page is not valid!";
}
}
void ServerValidation(object source, ServerValidateEventArgs args)
{
try
{
// Test whether the value entered into the text box is even.
int i = int.Parse(args.Value);
args.IsValid = ((i%2) == 0);
}
catch(Exception ex)
{
args.IsValid = false;
}
}
此示例是CustomValidator文档页面上的缩写版本:
http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.customvalidator.aspx
答案 3 :(得分:0)
是的,你可以。像卡洛斯的回答链接会告诉你。您可以将代码放在代码后面。(。cs文件)