Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 26
  1. #1
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116

    codice che funziona anche se non dovrebbe

    Ho un problema che mi sta demoralizzando e spero che qualcuno mi dia una mano.

    Allora, ho due pagine, a.aspx e b.aspx.

    In a.aspx richiamo la pagina b.aspx con un javascript:
    codice:
    	document.Form1.action = "b.aspx";
    	document.Form1.__VIEWSTATE.disabled = true;
    	document.Form1.submit();
    la pagina a.aspx ha il form così:
    codice:
        <form id="Form1" method="post" runat="server">
    		<INPUT type="hidden" id="__EVENTTARGET" name="__EVENTTARGET">
    		<INPUT type="hidden" id="__EVENTARGUMENT" name="__EVENTARGUMENT">
    		<INPUT type="text" id="h1" name="h1" runat="server" value="Pietro">
    		<INPUT type="button" value="Button" id="button1" language="javascript" onclick="return button1_onclick()">
        </form>
    Il codice funziona, la pagina b.aspx viene richiamata correttamente e posso leggere tranquillamente il parametro passato, h1

    Vediamo la pagina b.aspx;
    Il form è:
    codice:
    		<form id="Form1" method="post" runat="server">
    			<INPUT type="hidden" id="h1" name="h1" runat="server">
    		</form>
    niente di speciale, contiene un hidden runat server
    bene, nell'evento load della pagina metto:
    codice:
    Response.Write(Me.h1.Value & "
    ")
    
    Me.h1.Value = Trim(Request.Form("h1"))
    dove vi è naturalmente un errore, perchè, prima dovrei recuperare il parametro form, valorizzare l'hidden e poi scrivere il valore.


    Invece funziona perfettamente
    Non capisco come faccia b.aspx a conoscere il value di h1 PRIMA di essere popolato
    Pietro

  2. #2
    Moderatore di ASP.net L'avatar di djciko
    Registrato dal
    Nov 2002
    Messaggi
    6,887
    uhm...non e' che carichi la pagina due volte ?

  3. #3
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    a.aspx
    codice:
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
    <html>
    	<head>
    		<title>a</title>
    		<meta name="GENERATOR" content="Microsoft Visual Studio .NET 7.1">
    		<meta name="CODE_LANGUAGE" content="Visual Basic .NET 7.1">
    		<meta name="vs_defaultClientScript" content="JavaScript">
    		<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
      <script id="clientEventHandlersJS" language="javascript">
    <!--
    
    function button1_onclick() {
    	document.Form1.action = "b.aspx";
    	document.getElementById("__VIEWSTATE").disabled = true;
    	
    	document.Form1.submit();
    	
    }
    
    //-->
    </script>
    		
    	</head>
    	<body MS_POSITIONING="FlowLayout">
    		<form id="Form1" method="post" runat="server">
    			
    
    
    				<INPUT type="text" id="h1" name="h1" runat="server" value="Pietro"> <INPUT type="button" value="Button" id="button1" language="javascript" onclick="return button1_onclick()">
    			</P>
    			
    
    
    				<asp:LinkButton id="LinkButton1" runat="server">LinkButton</asp:LinkButton>
    			</P>
    		</form>
    	</body>
    </html>
    b.aspx
    codice:
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
    <html>
    	<head>
    		<title>b</title>
    		<meta name="GENERATOR" content="Microsoft Visual Studio .NET 7.1">
    		<meta name="CODE_LANGUAGE" content="Visual Basic .NET 7.1">
    		<meta name="vs_defaultClientScript" content="JavaScript">
    		<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
    	</head>
    	<body MS_POSITIONING="FlowLayout">
    		<form id="Form1" method="post" runat="server">
    			<INPUT type="hidden" id="h1" name="h1" runat="server">
    		</form>
    	</body>
    </html>
    <script runat="server">
        Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs)
    
            Response.Write(Me.h1.Value & "
    ")
    
            h1.Value = Trim(Request.Form("h1"))
    
        End Sub
    
    
    </script>
    Pietro

  4. #4
    Utente di HTML.it L'avatar di Legnetto
    Registrato dal
    May 2002
    Messaggi
    1,419
    Non mi ricordo esattamente la successione esatta degli eventi(saveviewstate, loadviewstate, pageload etc....)però se lo stesso script lo metti nel pageinit(che è il primo), vedrai che il response.write(...) prima del request.form non funziona, se invece lo metti nella riga dopo va normalmente.
    Sinceramente mi risulta difficile spiegare bene il concetto, però se crei un campo hidden e lo fai gestire dal server(runat="server")quest'ultimo sa già il "value" dell'input.
    Se togli il runat=server vedrai che non scrive niente fin che non valorizzi con "request.form...".
    Rileggendo vedo di aver dato una spiegazione animalesca ma, spero che tu mi capisca lo stesso.

    Legnetto

  5. #5
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Originariamente inviato da Legnetto
    Non mi ricordo esattamente la successione esatta degli eventi(saveviewstate, loadviewstate, pageload etc....)però se lo stesso script lo metti nel pageinit(che è il primo), vedrai che il response.write(...) prima del request.form non funziona, se invece lo metti nella riga dopo va normalmente.
    Sinceramente mi risulta difficile spiegare bene il concetto, però se crei un campo hidden e lo fai gestire dal server(runat="server")quest'ultimo sa già il "value" dell'input.
    Se togli il runat=server vedrai che non scrive niente fin che non valorizzi con "request.form...".
    Rileggendo vedo di aver dato una spiegazione animalesca ma, spero che tu mi capisca lo stesso.

    Legnetto
    Scusami, ma credo che sbagli. La spiegazione più accettabile, credo che sia semplicemente che asp.net prende lucciole per lanterne, cioè, SBAGLIA.

    Insomma, se una pagina asp (ASP), richiama una pagina aspx, passandole un parametro form pippo, e la pagina richiamata ha un hiddent runat server chiamato pippo, normalmente, il controllo me.pippo.value è sempre nullo, ALMENO CHE, non venga passato qualche parametro strano che induce la pagina a pensare di essere in postback...

    Pietro

  6. #6
    Utente di HTML.it L'avatar di Legnetto
    Registrato dal
    May 2002
    Messaggi
    1,419
    Originariamente inviato da pietro09
    Scusami, ma credo che sbagli. La spiegazione più accettabile, credo che sia semplicemente che asp.net prende lucciole per lanterne, cioè, SBAGLIA.

    Insomma, se una pagina asp (ASP), richiama una pagina aspx, passandole un parametro form pippo, e la pagina richiamata ha un hiddent runat server chiamato pippo, normalmente, il controllo me.pippo.value è sempre nullo, ALMENO CHE, non venga passato qualche parametro strano che induce la pagina a pensare di essere in postback...

    Non ho capito molto bene ma, nelle pagine di esempio che hai postato è naturale che il risultato sia quello che vedi.
    Tu al click del pulsante disabiliti la viewstate ma, solo sul client e(nota bene)solo quando avviene il rendering della pagina(l'ultimo), quindi sono già passati i vari pageload etc.. e anche il loadviewstate.
    Se come ti ho detto provi a mettere il famoso response.write nel page.init vedrai che la situazione cambia.
    Io ho provato(con il Codebehind)e la situazione è quella.
    Questo solo per amore di discussione, non avendo capito bene quello che intendi è possibilissimo che mi sbagli.
    Ciao
    Legnetto

  7. #7
    Moderatore di ASP.net L'avatar di djciko
    Registrato dal
    Nov 2002
    Messaggi
    6,887
    non e' che si confonde con i nomi dei forms ? prova a cambiare nome al secondo...(tutto puo' succedere)

    e poi prova a controllare il pBack in b.aspx...
    codice:
    <script runat="server">
        Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs)
         If not isPostBack then
            Response.Write(Me.h1.Value & "
    ")
            h1.Value = Trim(Request.Form("h1"))
         End if
        End Sub
    </script>

  8. #8
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Originariamente inviato da djciko
    non e' che si confonde con i nomi dei forms ? prova a cambiare nome al secondo...(tutto puo' succedere)
    No! Cioè, che si confonde e che tutto può succedere, sì, ma non è questo il motivo

    Una forma di pecorino sardo (virtuale) a chi indovina :maLOL:

    Ciao
    Pietro

  9. #9
    Moderatore di ASP.net L'avatar di djciko
    Registrato dal
    Nov 2002
    Messaggi
    6,887
    quando fuori e' bel tempo va bene e quando piove va in errore ?

  10. #10
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    dimenticavo, If not isPostBack then... non funziona, cioè, la pagina quando viene richiamata la prima volta, viene considerata in PostBack
    Pietro

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.