0

少し問題がありましたが、私は数時間前から理解しようとしていました。

私は3つのパネルを持っており、そのうちの2つはいつでもvisible=falseです。3つのパネルのうち2つには、ユーザー入力の検証を必要とするテキストボックスがあります。以下のコードは、3つのパネルすべてのすべてのコントロールをループし、テキストボックスごとに2つの検証コントロールを作成します。

最初のパネルである[設定]では、数字のみが許可されます。どちらの検証も、意図したとおりにエラーをキャッチします。

2番目のパネルであるConfigImagesには、3つのテキストボックスがあります。2つはテキスト/数字/制限された記号を許可し、入力が必要です。3番目はURLが必要です。バリデーターはこれらのテキストボックスで起動していません。

これらのバリデーターが起動しない理由はありますか?

コードビハインド

        //Initialize page validation
        foreach (Panel p in this.Form.Controls.OfType<Panel>().ToList())   
        {
            foreach (TextBox ctrl in p.Controls.OfType<TextBox>().ToList())
            {
                //add a new RequiredFieldValidator for each textbox
                this.Form.Controls.Add(new RequiredFieldValidator()
                {
                    //set the properties of the new RequiredFieldValidator
                    ControlToValidate = ctrl.ID.ToString(),
                    Display = ValidatorDisplay.None,
                    Enabled = true,
                    ErrorMessage = ctrl.ID.Substring(3) + " Field cannot be empty"
                }
                );

                //Add a new RegularExpressionValidator for each textbox
                this.Form.Controls.Add(new RegularExpressionValidator()
                {
                    //set the properties of the new RegularExpressionValidator
                    ControlToValidate = ctrl.ID.ToString(),
                    Display = ValidatorDisplay.None,
                    Enabled = true,
                    ErrorMessage = ctrl.ID.Substring(3) + " field has invalid characters",
                    //Double Ternary Allows 0-255 for all Settings textbox , a-zA-Z0-9'!#$%&'*+/=?^_`{|}~.- for Slide Text
                    //or URL for URL textbox
                    ValidationExpression = (ctrl.Parent.ID == "pnlSettings") ? @"^[0-9]*$" :
                        (ctrl.ID == "txtUrl") ? @"http(s)?://([\w-]+\.)+[\w-]+(/[\w- ./?%&=]*)?" :
                        @"^[a-zA-Z0-9#$%&@?""{}[]]*$"
                }
                );
            }
        }
        //Add Validation Summary        
        this.Form.Controls.Add(new ValidationSummary() { ShowMessageBox = true, ShowSummary = false });
4

0 に答える 0