2011-06-07 54 views
9

Aquí está mi problema. Tengo un campo oculto cuyo valor cambio a través de un método de JavaScript. El problema es que después de la devolución se pierde el valor.Valor oculto asignado en js perdido después de la devolución de datos

¿Cómo puedo persistir el valor después de la devolución?

Gracias!

.aspx al archivo Archivo

<asp:HiddenField ID="HiddenField1" runat="server" /> 
<asp:Button ID="BtnGuardar" runat="server" OnClick="BtnGuardar_Click" OnClientClick="return GridUpdateInfoOK()" /> 

Js

document.getElementById('<%= HiddenField1.ClientID %>').value = 'TEST'; 

.aspx.cs presentar

protected void BtnGuardar_Click(object sender, EventArgs e) 
{ 
    String test = HiddenField1.Value; 
} 
+0

nos muestras el código HTML, ya que se envía al navegador? No sé cómo se traduce eso de ASP.net a HTML y, después de todo, esto es con lo que JavaScript tiene que trabajar. –

+2

¿Está seguro de que se está llamando al método javascript? ¿Tiene EnableViewState establecido en verdadero en el campo oculto? – Chad

+1

Si ese código js está realmente en un "archivo .js" como dices, entonces no va a funcionar. Scriptlets (escapando al código C#) solo se analiza en archivos aspx/ascx. –

Respuesta

12

No necesita ejecutar la entrada oculta en el servidor. Que puede hacer:

<input type="hidden" id="HiddenInput" name="HiddenInput" value="" /> 

Luego, cuando se publique la espalda se puede acceder a él de esa manera:

protected void BtnGuardar_Click(object sender, EventArgs e) 
{ 
    String test = Request.Form["HiddenInput"]; 
} 
+1

Gracias marto, eso funcionó! – Gonzalo

+0

Request.Form ["HiddenInput"] no funciona en el método OnInit? –

+0

Gracias me salvó la vida. – alternatefaraz

5

que no funciona de esa manera. El valor no está presente desde la carga de página, por lo que no será devuelto. Intente usar un TextBox con style = "display: none".

+0

¿Hay alguna diferencia si se trata de un cuadro de texto o un campo oculto? Intenté agregar esto a mi archivo aspx: , asignando un valor en mi archivo js, ​​pero no tuve suerte. – Gonzalo

+0

Lo siento, ¡funcionó! Pero todavía no entiendo por qué funciona cuando uso un cuadro de texto y no cuando uso un campo oculto ... Ambos se traducen en elementos de entrada. – Gonzalo

+1

Sí, bueno, los cuadros de texto son para la entrada del usuario, por lo que están vacíos en PageLoad pero se publican con el nuevo valor. HiddenFields está oculto porque no desea que el cliente cambie su valor, por lo que se conserva. – noinstance

0

Utilice

<asp:HiddenField ID="HiddenField1" runat="server" EnableViewState="true"/> 

Entonces obtendremos el valor después de la devolución de datos.

Todas las propiedades de HiddenField son como bramido:

<asp:HiddenField 
    EnableTheming="True|False" 
    EnableViewState="True|False" 
    ID="string" 
    OnDataBinding="DataBinding event handler" 
    OnDisposed="Disposed event handler" 
    OnInit="Init event handler" 
    OnLoad="Load event handler" 
    OnPreRender="PreRender event handler" 
    OnUnload="Unload event handler" 
    OnValueChanged="ValueChanged event handler" 
    runat="server" 
    SkinID="string" 
    Value="string" 
    Visible="True|False" 
/> 
Cuestiones relacionadas