必要なfieldvalidatorを拡張します
-
25-10-2019 - |
質問
こんにちは、requirefieldvalidatorを拡張して新しいプロパティを取得し、Regularexpressionsも検証しようとしています。 Regularexpressionコントロールを使用できることはわかっていますが、2つのコントロールが必要なので、2つのコントロールを使用するだけで、2つのコントロールを削除したいと思います。また、私がそれを拡張することを含む私が作りたい他の機能もあります。
私の問題は、私が何をオーバーライドすべきかわからないことです - 私はvalidate()を試しましたが、「継承されたメンバー 'system.web.ui.webcontrols.basevalidator.validate()」を「オーバーライドすることはできません。または「オーバーライド」と私は、evaluateisvalid()がコントロールにあるものではなく、コントロールを検証するためのものであることを理解しています。
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;
}
}
}
解決
代わりにCustomValidatorを使用するか、BaseValidator Abstractクラスから派生する必要があると思います
http://msdn.microsoft.com/en-us/library/aa720677(v=vs.71).aspx
他のヒント
オーバーライドする必要があります EvaluateIsValid()
方法。 BaseValidator.Validate()
メソッドの使用 virtual EvaluateIsValid
初めの。例えば:
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;
}
所属していません StackOverflow