5

Sono abbastanza nuovo per ASP.NET e C# Ho trascorso la giornata ad apprendere le nozioni di base del provider di appartenenze ASP.NET. Ho creato tutto il mio validatore ma sono bloccato a emettere il mio messaggio di errore nella pagina.Come visualizzare i messaggi di errore di convalida in una pagina ASPC di ASP.NET?

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 ?? 

} 

Qual è il modo migliore per produrre il risultato varible sulla pagina come ho invocato il costruito in ASP: validatori fino ad ora.

+0

È questo utilizzando ASP.NET MVC o WebForms? Inoltre, hai controlli specifici sulla pagina in cui desideri visualizzare lo stato? –

+0

ASP.NET MVC, non ho messo alcun controllo sul posto perché sono un po 'insicuro su quali controlli potrebbe scrivere. Sarebbe essere appropriato? o sto andando alla deriva nella direzione sbagliata. – Yardstermister

+0

A quale classe appartiene il metodo privato: il controller? Potresti pubblicare il codice per l'azione del controller che la sta chiamando? – Charlino

risposta

8

MVC

vedere per un buon esempio ...

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

Fondamentalmente, è necessario propagare l'errore messaggio e anche il fatto che non v'è un errore alla tua vista dal tuo controller. ModelStateDictionary.AddModelError() si prenderà cura di entrambi questi compiti.

È quindi possibile utilizzare ValidationExtensions.ValidationSummary() da visualizzare.

Webforms

non si hanno di utilizzare un validatore per questo. La maggior parte delle persone no. Un semplice DIV con stile dovrebbe funzionare bene.

es.

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

Avviso parametro runat.

Ora nel code-behind è possibile provare

errorMessageDiv.innerHTML = "some error message"; 

Se davvero si vuole utilizzare un checkout validatore ...

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

In pratica si imposta la ErrorMessage e isValid parametri il relativo validatore nel codice sottostante. Il relativo ValidationSummary dovrebbe visualizzare il messaggio di errore.

+0

Questo è errato per ASP.NET MVC, ma non lo sapevi quando hai postato la risposta, quindi non voterò. – Charlino

+0

@Charlino: vedo il chiarimento di MVC. AFAIK il processo di base dovrebbe funzionare con MVC. Per esempio. http://stackoverflow.com/questions/446533/what-is-the-status-of-runatserver-tags-in-asp-net-mvc. Ma aggiornerò. – kervin

+0

Mi piace molto questa risposta :) –

0

Basta aggiungere un controllo etichetta asp alla pagina e quindi impostare la proprietà di testo con il valore restituito.

+0

Questo è errato per ASP.NET MVC, ma non lo sapevi quando hai pubblicato la risposta, quindi non voterò. – Charlino

0

Se si utilizza WebForms, è possibile utilizzare un controllo Label e impostare la proprietà ".Text" con il risultato. O un pannello di controllo. O un UserControl appositamente per l'output di messaggi di errore (questo è quello che faccio) che puoi aggiungere alla tua MasterPage.

+1

Questo è errato per ASP.NET MVC - ma non lo sapevi quando pubblichi la risposta, quindi non voglio votare. – Charlino

0

È possibile utilizzare sintesi di convalida oppure è possibile utilizzare un controllo etichetta per visualizzare il messaggio di errore