テキストボックスにASP.NET正規表現検証ツールを使用する際に問題が発生しています。 これは私のコードの要約版である:私は投げとNullReferenceExceptionを取得する場所「error」のマーク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;
。私はここで紛失しているものは見当たりません。なぜなら、正規表現はそのコンテキストではnullではなく、それが検証するコントロールではないことをデバッガで確認したからです。
エラーメッセージの表示方法をより細かく制御したいので、正規表現をどのパネルにもフックしないようにしました。
なぜそれからヌル参照が得られるのでしょうか? (これは.NETのバグですか?)
また、これはVisibleを0に設定しても機能しますが、IsValidは常にtrueになります。
Regexを使うだけに変更しました。私はC#が正規表現の裸の基本を持っていたことに気付かなかった。 – Earlz