Supongamos que tiene algo así como ASP ASP.NET: DetailsView para mostrar y editar un solo registro en una base de datos.¿Hay alguna forma nativa en ASP.NET para hacer un "mensaje de éxito"?
Es simple registrar los casos de error ... agrega la validación y un resumen de validación. Cuando su formulario de actualización falla la validación, naturalmente hace ruido: muestra el mensaje de validación y/o el resumen de validación. No se requiere un solo código detrás.
Pero luego, pasa la validación, y hace su actualización completamente en silencio. No tiene sentido que haya sucedido algo, y no parece haber ninguna configuración predeterminada para hacer un mensaje de éxito sin código subyacente.
Pero incluso los códigos subyacentes son confusos. ¿Qué evento debe mostrar el mensaje de éxito? onItemUpdate, ¿verdad? Bien, pero supongamos que haces otro cambio y obtienes un error de validación. Tu mensaje de éxito se queda. No pude encontrar un evento que desactive de manera confiable un mensaje de éxito existente si hubo un error de validación.
¡Esto debería ser un desarrollo web 101! Porqué es tan dificil?
EDIT:
Alguien sugirió utilizar el evento ItemCommand ... He intentado esto y muchos otros eventos, pero que el mensaje de éxito simplemente no va a desaparecer. Aquí hay un código.
Mi mensaje en ASP.NET
<label id="successMessage" class="successMessage" runat="server"></label>
Y mi etiqueta DataView (simplificado):
<asp:DetailsView
Id="EditClient"
DataKeyNames="LicenseID"
DataSourceID="MySource"
runat="server"
OnItemUpdated="SuccessfulClientUpdate"
OnItemCommand="ClearMessages">
Y, mi código subyacente:
protected void SuccessfulClientUpdate(object sender, DetailsViewUpdatedEventArgs e)
{
successMessage.InnerText = string.Format("Your changes were saved.");
successMessage.Visible = true;
}
protected void ClearMessages(object sender, DetailsViewCommandEventArgs e)
{
successMessage.InnerText = string.Empty;
successMessage.Visible = false;
}
Una vez que haga una actualización exitosa, sin embargo, nada parece hacer desaparecer ese mensaje, ni siquiera la validación fallida.
segundo EDIT:
sólo quiero ser claro que lo hice trate de poner el código ClearMessages en Load. Sin embargo, nada parece hacer que la etiqueta successMessage desaparezca cuando pulso actualizar una segunda vez CON un error de validación. ¿Alguien puede sugerir algún otro consejo para la resolución de problemas?
Santa mierda, esa es una realidad poco realista de lo que jamás hubiera imaginado, pero una respuesta fantástica. Supongo que también podría forzar la validación para volver al servidor cada vez. Eres un campeón. – danieltalsky
Otra sugerencia que podría ser útil: puedes hacer todo lo anterior en tu página maestra (suponiendo que uses ASP.NET 2.0). Es decir, puede colocar el control div justo encima del contenido y mostrar los mensajes de información allí (continuación ...) –
Expone un método público SetMessage() en el objeto derivado de MasterPage y obtiene el soporte de "mensaje de información" para todas las páginas que usan esta página maestra, usando '((MyMaster) Page.Master) .SetMessage (" Success ")'; –