2010-05-13 43 views
5

Soy bastante nuevo en ASP.NET y C# Me he pasado el día aprendiendo los principios básicos del proveedor de membresía ASP.NET He creado todo mi validador pero me estoy atascando al generar mi mensaje de error en la página.Cómo mostrar mensajes de error de validación en una página ASP.NET MVC?

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

} 

¿Cuál es la mejor manera de enviar el resultado varible hasta la página como he confiado en las construidas en ASP: validadores hasta ahora.

+0

Es ésta con ASP.NET MVC o WebForms? Además, ¿tiene algún control específico en la página en la que le gustaría que se muestre el estado? –

+0

ASP.NET MVC, no puse ningún control en su lugar ya que no estoy seguro de qué controles podría escribir. Would ¿Sería apropiado? o estoy a la deriva en la dirección equivocada. – Yardstermister

+0

¿A qué clase pertenece ese método privado, el controlador? ¿Podría publicar el código para la acción del controlador que lo está llamando? – Charlino

Respuesta

8

MVC

Véase, por ejemplo, una buena ...

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

Básicamente, es necesario para propagar el error mensaje y también el hecho de que no es un error a su vista desde su controlador. ModelStateDictionary.AddModelError() se encargará de ambas tareas por usted.

Puede utilizar para visualizar.

Webforms

usted no tienen utilizar un validador para esto. La mayoría de las personas no. Un DIV de estilo simple debería funcionar bien.

por ejemplo.

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

Aviso el parámetro runat.

En su código subyacente puede probar

errorMessageDiv.innerHTML = "some error message"; 

Si realmente desea utilizar un validador de pago ...

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

Básicamente se establece la ErrorMessage y isValid parámetros del validador relacionado en el código subyacente. El relacionado ValidationSummary debe mostrar el mensaje de error.

+0

Esto es incorrecto para ASP.NET MVC, pero no lo sabía al publicar la respuesta, por lo que no voy a votar. – Charlino

+0

@Charlino: Veo la aclaración de MVC. AFAIK el proceso básico debería funcionar con MVC. P.ej. http://stackoverflow.com/questions/446533/what-is-the-status-of-runatserver-tags-in-asp-net-mvc. Pero voy a actualizar. – kervin

+0

Me gusta mucho esta respuesta :) –

0

Simplemente agregue un control de etiqueta asp a la página y luego configure su propiedad de texto con el valor de retorno.

+0

Esto es incorrecto para ASP.NET MVC, pero no lo sabía al publicar la respuesta, por lo que no voy a votar. – Charlino

0

Si usa WebForms, puede usar un control Label y establecer la propiedad '.Text' con el resultado. O un control del Panel. O un UserControl específicamente para la salida de mensajes de error (esto es lo que hago) que puede agregar a su página maestra.

+1

Esto es incorrecto para ASP.NET MVC, pero no lo sabías al publicar la respuesta, así que no voy a votar. – Charlino

0

Puede utilizar Resumen de validación o puede utilizar un control de etiqueta para mostrar el mensaje de error

Cuestiones relacionadas