Foros del Web » Programación para mayores de 30 ;) » .NET »

Ejecutar codigo en la propia página

Estas en el tema de Ejecutar codigo en la propia página en el foro de .NET en Foros del Web. Hola de nuevo, Puesto que ASP.NET permite un unico formulario (runat="server"), si deseo meter un formulario de acceso rápido para el cliente, compartiendo el espacio ...
  #1 (permalink)  
Antiguo 02/05/2005, 08:58
Avatar de moNTeZIon  
Fecha de Ingreso: enero-2005
Ubicación: Lliçà de Munt - BCN
Mensajes: 1.625
Antigüedad: 19 años, 4 meses
Puntos: 9
Ejecutar codigo en la propia página

Hola de nuevo,

Puesto que ASP.NET permite un unico formulario (runat="server"), si deseo meter un formulario de acceso rápido para el cliente, compartiendo el espacio con el formulario de la página actual, al presionar el botón de envío para el formulario de acceso rápido, me saltan las restricciones de validación del formulario principal...

Como se lleva esto?

Si convierto el formulario de acceso a formulario HTML, entonces no dispongo de las ventajas del código en la página (*.vb) ??

Como debería enfocar estas situaciones plis??
__________________
..:: moNTeZIon ::..
  #2 (permalink)  
Antiguo 02/05/2005, 12:17
Rodolfo Israel
Invitado
 
Mensajes: n/a
Puntos:
Hola amigo, si al decir "saltan las restriccione" te refieres a que te advierten que algo anda mal en el formulario principal se debe a que tus validators tiene la propiedad EnableClientScript a true por lo que la validacion se hace del lado del cliente y no del lado del servidor, es por eso que se disparan todos los validadores que estan en conficto antes de que se ejecute el evento del boton acceso siquiera, la solucion es poner esa propiedad a false y hacer la validacion a codigo en los eventos adecuados, por ejemplo si un boton es el que ejecuta la accion que necesita estar validada, el codigo seria mas o menos asi.

Código:
Button_Click ... 'Evento click del boton

Page.Validate() 'Revalida la página
if Page.isValid then ' Pregunta primero si todo esta bien
   ... 'Ejecutar el codigo correspondiente cuando los datos del formulario son correctos
else
  ... 'Mostrar un mensaje de error o algo
end if
de esta manera la validacion se realiza en el servidor y no en el cliente, espero que eso solucione el problema.
  #3 (permalink)  
Antiguo 02/05/2005, 12:30
Rodolfo Israel
Invitado
 
Mensajes: n/a
Puntos:
acabo de ver tu otro post (http://forosdelweb.com/showthread.php?t=294261), y eso yo una vez lo implemente de la siguiente manera:

Digamos que tengo dos formularios en una sola pagina y digamos que los primeros 2 validators me validan el primer formulario y los otros 3 el segundo, yo lo haria asi, en primer lugar la propiedad EnableClientScrip la pondria a false para todos los validators, luego les pondria la propiedad enable = false, entonces considerando que tengo dos botones (uno para cada formulario) haria lo siguiente:

Código:
ButtonFormPrincipal_Click ..
   ValidatorFormPrincipal1.Enabled = true
   ValidatorFormPrincipal2.Enabled = true
   ValidatorFormSecundario1.Enabled = false
   ValidatorFormSecundario2.Enabled = false
   ValidatorFormSecundario3.Enabled = false
   Page.Validate()
   if Page.IsValid() then
    ...' Ejecutar el codigo necesario
   End If

end sub



ButtonFormSecundario_Click ..
   ValidatorFormPrincipal1.Enabled = false
   ValidatorFormPrincipal2.Enabled = false
   ValidatorFormSecundario1.Enabled = true
   ValidatorFormSecundario2.Enabled = true
   ValidatorFormSecundario3.Enabled = true
   Page.Validate()
   if Page.IsValid() then
    ...' Ejecutar el codigo necesario
   End If

end sub
algo asi fue la solucion que le di yo a un problema similar, espero que a ti tambien te ayude

Última edición por Rodolfo Israel; 02/05/2005 a las 12:39
  #4 (permalink)  
Antiguo 02/05/2005, 12:51
 
Fecha de Ingreso: noviembre-2004
Mensajes: 7
Antigüedad: 19 años, 5 meses
Puntos: 0
q grande, muchas gracias, me has resuelto el problema
  #5 (permalink)  
Antiguo 03/05/2005, 03:00
Avatar de moNTeZIon  
Fecha de Ingreso: enero-2005
Ubicación: Lliçà de Munt - BCN
Mensajes: 1.625
Antigüedad: 19 años, 4 meses
Puntos: 9
He estado probando.
He conseguido que no salten los controles de validación del form principal... enviando los datos del otro form, y todo bien, pero cuando vuelve la página del servidor, ha desaparecido el form principal. Esto se debe a que tengo el siguiente código en la página aspx:

Código PHP:
<% If Page.IsPostBack Then %>
  <
tr>
    <
td class="TextoNormal" align="center" colSpan="2"><br>
      <
asp:Label id="Resultado" runat="server"></asp:Label>
    </
td>
  </
tr>
<% Else %>
   <!-- 
Aqui está el codigo para el formulario que desaparece --> 
Lo tenía montado así para que cuando se hubiera enviado el formulario, mostrara un mensaje con el resultado de la operación... pero claro, al haber enviado el formulario del lado y no este, me hace el PostBack igualmente, y entra en el IF.
He solucionado esto, haciendo un redirect al final del codigo del botón, a la misma página, de forma que no me entre en el if del PostBack.
No se si será muy buena solución pero me hace lo que esperaba.

----------------------------------------------

Por otro lado, al haber puesto la propiedad "EnableClientScript" a false, lo que me hace el formulario es viajar hasta el servidor y luego mostrarme el ValidationSumary con los errores, pero me sigue entrando en el if, con lo que no me muestra el resto del formulario para poderlo completar y he de pulsar atrás para volver al formulario.

Como debería enfocar el IF ??
__________________
..:: moNTeZIon ::..

Última edición por moNTeZIon; 03/05/2005 a las 05:00
  #6 (permalink)  
Antiguo 03/05/2005, 10:35
Avatar de moNTeZIon  
Fecha de Ingreso: enero-2005
Ubicación: Lliçà de Munt - BCN
Mensajes: 1.625
Antigüedad: 19 años, 4 meses
Puntos: 9
OK.
He cambiado el IF por:

IF PaginaValida THEN
[...]
ELSE
[...]

Donde PaginaValida es una variable booleana declarada en la página *.vb como publica, y que la manejo a mi aire según la situacion..

Gracias por tus ideas Rodolfo!!
Ese Rodolfo Man...
__________________
..:: moNTeZIon ::..
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 06:55.