Thomas Bandt

Über mich | Kontakt | Archiv

CreateUserWizard: ErrorMessage-Literal durch CustomControl ersetzen

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

   ID="valCustom" 
   runat="server" 
   ValidationGroup="CreateUserWizard1" 
   Display="none"
/>

Schritt 2: Fehlermeldung "umleiten"

protected override void OnPreRender(EventArgs e)
{
   if (Page.IsPostBack)
   {
      Literal errorMessage = ((Literal)(CreateUserWizardStep1.ContentTemplateContainer.FindControl("ErrorMessage")));
      if (!string.IsNullOrEmpty(errorMessage.Text))
      {
         valCustom.ErrorMessage = errorMessage.Text;
         valCustom.Enabled = true;
         valCustom.IsValid = false;
      }
      else
      {
         valCustom.IsValid = true;
      }
   }
}

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:

"HideErrorMessage" runat="server" Visible="false">"ErrorMessage" runat="server" EnableViewState="False" />



« Zurück  |  Weiter »