L'extension RequiredFieldValidator
-
25-10-2019 - |
Question
Bonjour, je suis en train d'étendre le requirefieldvalidator de prendre une nouvelle RegularExpressions de propriété et valident également. Je sais que je peux utiliser le contrôle RegularExpression mais alors je besoin de 2 contrôles donc je veux éliminer si je ne dispose que d'utiliser deux commandes. Il y a également d'autres fonctionnalités que je veux faire ce qui me inclure l'étendre.
Mon problème est que je ne sais pas quoi remplacer - j'ai essayé la validation () mais je reçois « ne peut pas passer outre membre hérité « System.Web.UI.WebControls.BaseValidator.Validate () » parce qu'il est pas marqué virtuel , abstrait, ou override » et je comprends le EvaluateIsValid () est pour valider le contrôle pas ce qui est dans le contrôle.
using System;
using System.Collections.Generic;
using System.Text;
using System.Web.UI.WebControls;
using System.Text.RegularExpressions;
namespace ClassLibrary
{
public class RequiredFieldValidatorExtended : RequiredFieldValidator
{
public RequiredFieldValidatorExtended()
{
}
private string _regEx;
public string RegEx
{
get
{
return _regEx;
}
set
{
_regEx = this.RegEx;
}
}
protected override bool EvaluateIsValid()
{
TextBox textBox = (TextBox)Page.Form.FindControl(ControlToValidate);
if (textBox.Text != null && textBox.Text.Length > 0)
{
if (this._regEx != null && _regEx.Length > 0)
{
if (Regex.IsMatch(textBox.Text, _regEx))
IsValid = true;
else
IsValid = false;
}
IsValid = true;
}
else
IsValid = false;
base.Validate();
return IsValid;
}
}
}
La solution
Je pense que vous devriez utiliser à la place CustomValidator ou dériver de classe abstraite BaseValidator
http://msdn.microsoft.com /en-us/library/aa720677(v=vs.71).aspx
Autres conseils
Vous devez remplacer la méthode EvaluateIsValid()
. BaseValidator.Validate()
utilisations virtual EvaluateIsValid
interne . Par exemple:.
protected override bool EvaluateIsValid()
{
bool isValid = base.EvaluateIsValid();
if (isValid)
{
string controlToValidate = this.ControlToValidate;
string controlValue = GetControlValidationValue(controlToValidate);
if (!string.IsNullOrWhiteSpace(controlValue))
{
if (this._regEx != null && _regEx.Length > 0)
{
if (Regex.IsMatch(controlValue, _regEx))
isValid = true;
}
}
}
return isValid;
}