Language:

CreateUserWizard: ErrorMessage-Literal durch ValidationSummary ersetzen

Language: Deutsch
Programming Language: C#
Published by: Thomas
Last Update: 4/24/2006
Views: 906

Description

Das CreateUserWizard-Control stellt "interne Fehler", also zum Beispiel evtl. schon vorhandene Benutzernamen, ungültige Passwörter usw. in einem Literal-Control dar (zumindest dann, wenn den CreateUserWizard "customized" hat.).

Das ist natürlich ziemlich unsinnig, wenn man bereits ein ValidationSummary-Control verwendet, denn es bringt nicht nur die Struktur sondern ggf. auch noch das Layout durcheinander. Man verschaffe sich also Abhilfe.

Schritt 1: CusomControl anlegen

Schritt 2: Fehlermeldung "umleiten"

Schritt 3: Literal-Control "ErrorMessage" ausblenden

Hier musste ich in der Eile passen - ehrlich gesagt habe ich die Stelle nicht gefunden, wo das Literalcontrol gefüllt wird usw. Der Versuch es im OnPreRender auszublenden schlug fehl, irgendwo werden die Eigenschaften scheinbar später noch überschrieben. Wenn mir hier jemand auf die Sprünge helfen könnte, wäre das fein :-)

Aber man kann ja etwas tricksen ;)

Code

1 Schritt 1: 2 3 <asp:CustomValidator 4 ID="valCustom" 5 runat="server" 6 ValidationGroup="CreateUserWizard1" 7 Display="none" 8 /> 9 10 Schritt 2: 11 12 protected override void OnPreRender(EventArgs e) 13 { 14 if (Page.IsPostBack) 15 { 16 Literal errorMessage = ((Literal)(CreateUserWizardStep1.ContentTemplateContainer.FindControl("ErrorMessage"))); 17 if (!string.IsNullOrEmpty(errorMessage.Text)) 18 { 19 valCustom.ErrorMessage = errorMessage.Text; 20 valCustom.Enabled = true; 21 valCustom.IsValid = false; 22 } 23 else 24 { 25 valCustom.IsValid = true; 26 } 27 } 28 } 29 30 Schritt 3: 31 32 <asp:Label id="HideErrorMessage" runat="server" Visible="false"><asp:Literal ID="ErrorMessage" runat="server" EnableViewState="False" /></asp:Label>

No comments avaiable

Add a comment

Name *  

Email (won't be displayed) *    

Website  

Comment *  

Sicherheitscode Security Code *    

RSS