2011-04-17 26 views
9

Estoy muy sorprendido de ver anoche que mi código funcionaba bien y al día siguiente de repente mi textbox.text siempre tiene una cadena vacía ..
Mi código es:textbox.text siempre devolviendo una cadena vacía en lugar del texto ingresado por el usuario

Name of Event* : 

    <br /> 
    <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox> 
    <br /> 

Código atrás:

protected void Page_Load(object sender, EventArgs e) { 
} 

protected void create_Click(object sender, EventArgs e) { 

    if (!object.Equals(Session["UserLoginId"], null)) { 

     int mid = 0; 
     int cid = 0; 
     bool valid = true; 

     if (this.TextBox1.Text == "") { 

      error.Text = "<p style='color:red'>Marked Fields are compulsory!!</p>"; 

     } 

     else { 
      .... // database insert .... 
     } 

siempre estoy terminando con un valor error.text.

¿Por qué?

+0

Sospecho que hay algo más que sucede aquí en el código que no está incluido. ¿Tal vez hay algo en 'Page_Load' que está borrando el' TextBox'? – David

+1

puede haber una etiqueta de formulario múltiple en su aplicación en asp.net webform solo una etiqueta de formulario permitir comprobar que –

+1

@ImranRashid Exactamente el mismo problema arruinó todo mi día ... una etiqueta de formulario con el atributo runat = server estaba presente en la página maestra, primero estaba obteniendo valores vacíos en el código detrás ... ¡y luego terminé con dos errores en las etiquetas de formulario del lado del servidor! :/ – sohaiby

Respuesta

1

Si la página hace una publicación, se borrarán todos los datos ingresados ​​por el usuario, ya que los controles son sin estado, por lo que debe mantener su entrada de datos a través de EnableViewState = true.

+0

@gitesh - agregue este código a su pregunta. Si nada más tendrá un mejor formato. – ChrisF

+0

No estoy haciendo nada en Page_Load –

+0

es 'crear' su botón? , publique el 'aspx' del botón, y quiero saber si usa el panel de actualización o no? –

3

Mencionamos un poco, pero debe asegurarse de que al verificar su evento Post_Back no se borre su cuadro de texto. Lo haría por defecto. Pruebe algo como esto:

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (!IsPostBack) 
     { 
      if (this.TextBox1.Text == "") 
      { 
       error.Text = "<p style='color:red'>Marked Fields are compulsory!!</p>"; 
      } 
     else 
     { 
      //..... 
     } 
    } 
} 
+0

¡No funciona! Y he descubierto la razón pero no sé realmente por qué sucede esto He cambiado mi archivo maestro y con el nuevo archivo maestro de diseño no funciona, si el código está bien y funciona, lo he comprobado. Ahora, ¿por qué el nuevo archivo maestro está haciendo asp cuadro de texto para perder estado después depostback ... ???? –

5

tenido un problema similar con los cuadros de texto consiguiendo borran en la adición de una nueva fila. Era el problema de la recarga de la página cuando se hacía clic en el botón Agregar.

ha solucionado el problema agregando:

Sub Page_Load 
    If Not IsPostBack Then 
    BindGrid() 
    End If 
End Sub 

por la documentación de Microsoft http://msdn.microsoft.com/en-us/library/aa478966.aspx.

0

Tengo este problema, pero estoy utilizando la solicitud de Telerik Ajax con el objetivo en javascript. Tengo un RadTextBox y un RadButton. Llamo el mismo código de ambos, pero si lo llamo desde el cuadro de texto y solicito una devolución de datos, el cuadro de texto está vacío en la carga de la página. Entonces llamo al RadAjaxManager.ajaxRequestWithTarget('someUserControlClientID', 'myTextBoxText'); para que en la página_carga, pueda tomar el texto, en caso de que no se envíe al servidor con los argumentos enviados, Request.Form("__EVENTARGUMENT") mantendrá mi valor de textBox. por cierto, RadAjaxManager.ajaxRequestWithTarget es como __doPostBack('targetID', 'arguments');. Espero que esto ayude a alguien. No tengo tiempo para investigar por qué pierdo el texto con esta solicitud, así que esta es la solución que hice.

2

Tuve un problema similar. Tenía datos de alimentación de datos de texto en una base de datos en devolución de datos. También diseñé la página para poblar el área de texto del mismo campo de base de datos. La razón por la que falló fue porque olvidé poner mi lógica de recarga dentro de un bloque if(!IsPostPack) {}. Cuando se produce una publicación posterior, el evento de carga de página se activa nuevamente y mi lógica de recarga borró el área de texto antes de que pudiera registrar el valor inicial.

Cuestiones relacionadas