Verlängerung des erforderlichen FieldFieldValidators
-
25-10-2019 - |
Frage
Hallo, ich versuche, den ForderungsFieldValidator zu erweitern, um eine neue Immobilie zu nehmen und auch Regularexpressionen zu validieren. Ich weiß, dass ich die Regularexpressionskontrolle verwenden kann, aber dann brauche ich 2 Steuerelemente, also möchte ich sie eliminieren, also muss ich nur zwei Steuerelemente verwenden. Es gibt auch andere Funktionen, die ich machen möchte, die mich einbeziehen, um es zu erweitern.
Mein Problem ist, dass ich nicht weiß, was ich überschreiben soll. oder überschreiben "und ich verstehe, dass evaluateIsValid () zur Validierung der Kontrolle nicht das ist, was in der Kontrolle steht.
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;
}
}
}
Lösung
Andere Tipps
Sie sollten überschreiben EvaluateIsValid()
Methode. BaseValidator.Validate()
Methode verwendet virtual EvaluateIsValid
im Inneren. Z.B:
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;
}