Je rencontre des problèmes lors de l'utilisation d'un validateur d'expressions régulières ASP.NET dans les zones de texte. Ceci est une version condensée de mon code:Expression régulière Validate() renvoie NullReference (ASP.NET)
RegularExpressionValidator regex = new RegularExpressionValidator();
regex.ID = "TextBoxRegExValidator" + ((AVPEditControl)avpControl).ThisFieldRID.ToString(); //random name
regex.ControlToValidate = ((AVPEditControl)avpControl).TextControlID; //this is valid.
regex.ValidationExpression = "\d{3}-\d{2}-\d{4}";
regex.Text = "epic fail";
//later, in an event handler
regex.Display = ValidatorDisplay.None;
regex.ErrorMessage = "";
regex.Validate(); //ERROR
bool valid = AVPEdit.Validator.IsValid;
Là où je marqué « erreur » est là où je reçois un NullReferenceException jeté. Je ne vois pas ce qui me manque ici, car j'ai confirmé avec un débogueur que regex n'est pas nulle dans ce contexte, et que le contrôle n'est pas non plus valide.
Je souhaite avoir un contrôle plus fin sur la façon dont le message d'erreur est affiché, c'est pourquoi j'ai choisi de ne pas relier regex dans des panneaux ou autres.
Pourquoi devrais-je obtenir une référence nulle à partir de cela? (Est-ce un bug dans .NET?)
Notez également que cela fonctionne lorsque je mets Visible à 0, mais cela fait que IsValid est toujours vrai.
Je l'ai changé pour utiliser simplement Regex. Je n'ai pas réalisé que C# avait autre chose que les bases nues de regex .. – Earlz