El campo de contraseña de C# retorna vacío al postback pero se necesita borrar el campo al hacer clic en el botón.
Tengo tanto el campo de contraseña como el campo de confirmación de contraseña en mi formulario web que quedaron vacíos después de enviar nuevamente (tengo cascading DDLs. El segundo DDL solo se habilitará si se selecciona algún valor en el primer DDL y ambos son campos obligatorios. He configurado la propiedad autopostback del primer DDL en true para que en cada envío de nuevo, las contraseñas queden vacías). Para solucionar esto, utilicé el siguiente código:
if (IsPostBack)
{
if (!String.IsNullOrEmpty(txtPassword.Text.Trim()))
{
txtPassword.Attributes["value"] = txtPassword.Text;
}
if (!String.IsNullOrEmpty(txtConfirmPassword.Text.Trim()))
{
txtConfirmPassword.Attributes["value"] = txtConfirmPassword.Text;
}
}
Ahora, al hacer clic en el botón de enviar, quiero borrar todos los valores de los cuadros de texto y los DDL. Pero lo anterior no me permite borrar los campos de contraseña y confirmación de contraseña. Código para borrar los campos:
foreach (Control ctrl in form1.Controls)
{
if (ctrl.GetType() == typeof(TextBox))
{
((TextBox)(ctrl)).Text = String.Empty;
}
else if (ctrl.GetType() == typeof(DropDownList))
{
((DropDownList)(ctrl)).SelectedIndex = 0;
}
}
Por favor, ayúdame a solucionar el problema. Cualquier ayuda es apreciada.
davy.ai
Parece que el problema está en los campos
txtPassword
ytxtConfirmPassword
, los cuales no se están borrando cuando se ejecuta el bucleforeach
. Esto se debe a que el atributovalue
de estos campos se establece en el bloqueif (IsPostBack)
.Para solucionar esto, puedes modificar el bloque
if (IsPostBack)
para que solo se establezca el atributovalue
cuando la página no se está borrando. Puedes hacer esto verificando si la página no se está borrando antes de establecer el atributovalue
, de la siguiente manera:Donde
IsPageBeingCleared()
es una función que verifica si la página se está borrando. Puedes implementar esta función de la siguiente manera:Esta función verifica si alguno de los cuadros de texto o listas desplegables tiene un valor distinto al valor predeterminado (es decir, vacío o índice 0) y devuelve
false
si encuentra alguno de esos valores. Si no encuentra ninguno de esos valores, devuelvetrue
, indicando que la página se está borrando.Con estas modificaciones en el código, los campos de contraseña y confirmación de contraseña deben borrarse junto con el resto de los campos del formulario.