2010-05-13 10 views
5

Ich bin ziemlich neu in ASP.NET und C# Ich habe den Tag damit verbracht, die Grundlagen des ASP.NET-Mitgliedschaftsanbieters zu lernen. Ich habe alle meine Validatoren aufgebaut, stehe jedoch bei der Ausgabe meiner Fehlermeldung auf der Seite fest.Wie werden Validierungsfehlermeldungen auf einer ASP.NET MVC-Seite angezeigt?

private void LogCreateUserError(MembershipCreateStatus status, string username) 
{ 
    string reasonText = status.ToString(); 

    switch (status) 
    { 
     case MembershipCreateStatus.DuplicateEmail: 
     case MembershipCreateStatus.DuplicateProviderUserKey: 
     case MembershipCreateStatus.DuplicateUserName: 

      reasonText = "The user details you entered are already registered."; 
      break; 

     case MembershipCreateStatus.InvalidAnswer: 
     case MembershipCreateStatus.InvalidEmail: 
     case MembershipCreateStatus.InvalidProviderUserKey: 
     case MembershipCreateStatus.InvalidQuestion: 
     case MembershipCreateStatus.InvalidUserName: 
     case MembershipCreateStatus.InvalidPassword: 

      reasonText = string.Format("The {0} provided was invalid.", status.ToString().Substring(7)); 
      break; 
     default: 
      reasonText = "Due to an unknown problem, we were not able to register you at this time"; 
      break; 

    } 

    //CODE TO WRITE reasonText TO THE HTML PAGE ?? 

} 

Was ist der beste Weg, die varible Ergebnis auf der Seite zur Ausgabe als ich auf den eingebauten ASP verlassen haben: Validatoren bis jetzt.

+0

Ist das mit ASP.NET MVC oder WebForms? Verfügen Sie über bestimmte Steuerelemente auf der Seite, auf der der Status angezeigt werden soll? –

+0

ASP.NET MVC, ich habe keine Steuerelemente dafür eingerichtet, da ich ein wenig unsicher bin, welche Steuerelemente es schreiben könnte. Würde geeignet sein? oder treibe ich in die falsche Richtung. – Yardstermister

+0

Zu welcher Klasse gehört diese private Methode - der Controller? Könnten Sie den Code für die Controller-Aktion veröffentlichen, die ihn aufruft? – Charlino

Antwort

8

MVC

Siehe für ein gutes Beispiel ...

ASP.NET MVC Html.ValidationSummary(true) does not display model errors

Grundsätzlich müssen Sie den Fehler Nachricht und auch diese Tatsache propagieren, dass es ist ein Fehler zu Ihrer Ansicht von Ihrem Controller. ModelStateDictionary.AddModelError() wird sich um diese beiden Aufgaben kümmern.

Sie können dann ValidationExtensions.ValidationSummary() zur Anzeige verwenden.

Webforms

Sie nicht haben einen Validator für diesen Einsatz. Die meisten Leute nicht. Ein einfacher gestylter DIV sollte gut funktionieren.

z.

<div id="errorMessageDiv" runat="server"></div> 

Hinweis der Runat Parameter.

Jetzt in Ihrem Code-Behind können Sie versuchen,

errorMessageDiv.innerHTML = "some error message"; 

Wenn Sie wirklich ein Validator Kasse verwenden möchten ...

http://weblogs.asp.net/ashicmahtab/archive/2008/12/12/putting-messages-into-a-validationsummary-control-from-code.aspx

Grundsätzlich setzen Sie die Errormessage und isValid Parameter der zugehörige Validator im Code dahinter. Die zugehörige ValidationSummary sollte die Fehlermeldung anzeigen.

+0

Das ist falsch für ASP.NET MVC - aber Sie wussten nicht, dass wenn Sie die Antwort veröffentlichen, so werde ich nicht abstimmen. – Charlino

+0

@Charlino: Ich sehe die MVC Klärung. AFAIK der grundlegende Prozess sollte mit MVC arbeiten. Z.B. http://stackoverflow.com/questions/446533/what-is-the-status-of-runatserver-tags-in-asp-net-mvc. Aber ich werde aktualisieren. – kervin

+0

Ich mag diese Antwort wirklich :) –

0

Fügen Sie einfach ein ASP-Label-Steuerelement zur Seite und legen Sie dann seine Text-Eigenschaft mit dem Rückgabewert.

+0

Das ist falsch für ASP.NET MVC - aber Sie wussten nicht, dass wenn Sie die Antwort veröffentlichen, so werde ich nicht abstimmen. – Charlino

0

Wenn Sie WebForms verwenden, können Sie ein Label-Steuerelement verwenden und die Eigenschaft '.Text' des Ergebnisses festlegen. Oder ein Panel-Steuerelement. Oder ein UserControl speziell für die Ausgabe von Fehlermeldungen (das ist was ich tue), die Sie zu Ihrer MasterPage hinzufügen können.

+1

Dies ist falsch für ASP.NET MVC - aber Sie wussten nicht, dass wenn Sie die Antwort, so werde ich nicht abstimmen. – Charlino

0

können Sie Validierung Zusammenfassung verwenden, oder Sie können ein Label-Steuerelement verwenden, um die Fehlermeldung anzuzeigen