Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 19
  1. #1

    ASP.NET Forms - Quesito su POSTBACKURL

    Programmo con VS2012, ho riscontrato diverse volte una difficoltà valorizzando questo parametro sui BUTTON.

    Pur cercando di capire la cosa con i breakpoint, ho riscontrato che in alcuni contesti, se valorizzato POSTBACKURL, il codice dell'evento CLICK non viene eseguito, in altri viene eseguito.

    Sono agli inizi con ASP.Net, ho riscontrato questo problema diverse volte ma ogni volta mi sono detto che forse avevo posizionato il breakpoint nel punto sbagliato, ma dopo una serie di verifiche ho escluso che si possa essere trattata di una mia semplice distrazione...

    Per essere più chiaro, imposto il postbackurl, in alcuni casi esegue il codice dell'evento click, in altri no, come funziona o dovrebbe funzionare?
    Cosa può causare questa discrepanza?

    Grazie a tutti coloro che vorranno darmi un chiarimento
    Ultima modifica di djciko; 21-03-2016 a 15:18

  2. #2
    Utente di HTML.it L'avatar di mexican
    Registrato dal
    Oct 2001
    residenza
    cava de tirreni
    Messaggi
    3,541
    Il postback di default viene sempre effettuato dal un button, anche se non lo chiami esplicitamente.
    Posta un pò di codice per capire meglio cosa fai.

  3. #3
    Moderatore di ASP.net L'avatar di djciko
    Registrato dal
    Nov 2002
    Messaggi
    6,887
    su che tipo di button lo fai il PostBackUrl ?

  4. #4
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    certo che mostrare un po' di codice non sarebbe male

    una domanda: imposti la proprietà postbackurl SEMPRE ad un'altra pagina? o qualche volta alla pagina corrente?

    https://msdn.microsoft.com/it-it/lib...v=vs.110).aspx

    dal sito vedo che la pagina richiamata fa dei controlli solo nell'evento load, ma mi posso sbagliare, dato che non ho mai usato questa proprietà
    Pietro

  5. #5
    Moderatore di ASP.net L'avatar di djciko
    Registrato dal
    Nov 2002
    Messaggi
    6,887
    Ho provato, da una webform1.aspx ad una webform2.aspx

    casi:

    1.
    <asp:button ID="btPBU" runat="server" Text="PostBackUrl" PostBackUrl="~/WebForm2.aspx" OnclientClick="btPBU_Click" OnClick="btPBU_Click" />

    NON fa la PostBackUrl ma esegue l'evento interno Click
    ------------------------------

    2.
    <asp:button ID="btPBU" runat="server" Text="PostBackUrl" PostBackUrl="~/WebForm2.aspx" OnClick="btPBU_Click" />

    Non fa l'evento interno ma fa la PostBackUrl
    ------------------------------

    3.
    <asp:button ID="btPBU" runat="server" Text="PostBackUrl" PostBackUrl="~/WebForm2.aspx" OnclientClick="btPBU_Click" />

    Non fa nulla.
    ------------------------------


    Conclusione:
    Ho usato questa:

    codice:
    <asp:button ID="btPBU" runat="server" Text="PostBackUrl" PostBackUrl="~/postbackUrl/WebForm2.aspx" OnclientClick="btPBU_Click" OnClick="btPBU_Click"  />

    Con una Response.Redirect alla pagina di destinazione nell'evento lato server "btPBU_Click" per fare entrambe le cose.

  6. #6
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    sto usando vs 2010 e i tuoi esempi mi funzionano
    Pietro

  7. #7
    Moderatore di ASP.net L'avatar di djciko
    Registrato dal
    Nov 2002
    Messaggi
    6,887
    usa il framework 4.0 e fammi sapere. a questo punto il mistero si infittisce

    webform1.aspx:
    codice:
    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="STUDIO3._0.postbackUrl.WebForm1" %>
    
    
    <!DOCTYPE html>
    
    
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
        <title></title>
    </head>
    <body>
        <form id="form1" runat="server">
        <div>
        <asp:button ID="btPBU" runat="server" Text="PostBackUrl" PostBackUrl="~/postbackUrl/WebForm2.aspx" OnclientClick="btPBU_Click" OnClick="btPBU_Click"  />
        </div>
        </form>
    </body>
    </html>
    
    
    ----
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    
    
    namespace STUDIO3._0.postbackUrl
    {
        public partial class WebForm1 : System.Web.UI.Page
        {
            public void btPBU_Click(object sender, EventArgs e)
            {
                Response.Write("btPBU_Click evento interno");
                Response.Redirect("webform2.aspx");
            }
        }
    }

  8. #8
    Moderatore di ASP.net L'avatar di djciko
    Registrato dal
    Nov 2002
    Messaggi
    6,887
    la webform2.aspx scrive soltanto "pagina di atterraggio" nel page load.

  9. #9
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    questa è la pagina che funziona benissimo. Fa il submit in un'altra pagina
    codice:
    <%@ Page Language="VB" AutoEventWireup="false" CodeFile="a.aspx.vb" Inherits="prove_a" %>
    
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title></title>
        <style type="text/css">
            
        </style>
    <script type="text/javascript">
    // <![CDATA[
    
    function btPBU_Click()
    {
        alert("Attenzione, stai per lasciare la pagina");
    }
    
    // ]]>
    </script>
    </head>
    <body>
        <form id="form1" runat="server">
        <div>
            <asp:button ID="btPBU" runat="server" Text="PostBackUrl" PostBackUrl="~/scrivi_parametri.aspx" OnclientClick="btPBU_Click();" OnClick="btPBU_Click"  />
            
        </div>
        </form>
    </body>
    </html>
    se elimino il PostBackUrl allora si verifica il postback e viene richiamato il codice:
    codice:
        Protected Sub btPBU_Click(sender As Object, e As System.EventArgs)
            Throw New Exception("Errore provocato")
        End Sub
    PRIMA il messaggio javascript; poi il postback con intercettazione dell'errore

    Pietro

  10. #10
    Moderatore di ASP.net L'avatar di djciko
    Registrato dal
    Nov 2002
    Messaggi
    6,887
    si, avevo dimenticato le parentesi nella chiamata all'onclientclick (e chiamato erroneamente un evento lato server).

    pero' il nostro amico vuole eseguire un evento LATO SERVER prima di lasciare la pagina, quindi credo che l'unica soluzione sia --non usare la proprieta' postbackurl-- e farlo a mano con una redirect
    Ultima modifica di djciko; 22-03-2016 a 19:05

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 © 2025 vBulletin Solutions, Inc. All rights reserved.