Visualizzazione dei risultati da 1 a 10 su 14

Discussione: goto catch

Hybrid View

  1. #1
    Moderatore di ASP.net L'avatar di djciko
    Registrato dal
    Nov 2002
    Messaggi
    6,887
    ah ok sorry, la parola "dirottare" mi ha fatto pensare involontariamente ad una redirect.

    Oltre alla soluzione di cui sopra, PageMethods e' abbastanza semplice ma devi fare un po' di pratica: dopo aver indicato il metodo lato server come WebMethod, devi indicare nella chiamata:

    Parametri
    Metodo JS da eseguire se tutto ok
    Metodo JS da eseguire se viene sollevata una eccezione

    Credo sia meglio fare tutto nel TRY e deviare tramite un booleano o meglio ancora, con le transazioni come fa pietro. La tecnica dei PageMethods è fragile e poco manutenibile, a mio avviso.

    PS: Posta il codice
    Ultima modifica di djciko; 30-05-2016 a 20:46

  2. #2
    Utente di HTML.it L'avatar di supermac
    Registrato dal
    Jun 2001
    Messaggi
    1,881
    Quote Originariamente inviata da djciko Visualizza il messaggio
    Posta il codice
    codice:
    Protected Sub FormView1_Iteminserting(ByVal sender As Object, ByVal e As FormViewInsertEventArgs) Handles FormView1.ItemInserting
            Dim almes As String = "", strsql As String = ""
            If Page.IsValid Then
                Try
                    Dim cn = New SqlConnection(ConfigurationManager.ConnectionStrings("FLINK").ConnectionString)
                    Using cn
                        cn.Open()
                        'controllo che non ci sia già usern uguale in db
                        strsql = "SELECT op_ID FROM operatori WHERE usern=@usern"
                        Dim cmd = New SqlCommand(strsql, cn)
                        Dim usern As TextBox = FormView1.FindControl("textuser")
                        cmd.Parameters.AddWithValue("@usern", usern.Text)
                        Dim rs As SqlDataReader = cmd.ExecuteReader()
                        If rs.HasRows Then
                          'qui deve cancellare l'inserimento e mandare al catch exception dove fa comparire un alert 
                          'ma mi pare che l'e.cancel=true faccia anche uscire dalla sub (e quindi niente alert)
                        End If
    
                        'inserimento
                        strsql = "INSERT INTO operatori ........ "
                        Dim cmd = New SqlCommand(strsql, cn)
                        
                        cmd.ExecuteNonQuery()
    
                    End Using
                    almes = "alert('Credenziali corretamente inserite.');window.location.href = 'mypage.aspx';"
                    Page.ClientScript.RegisterClientScriptBlock(Me.GetType(), "MyScript", almes, True)
    
    
                Catch ex As Exception
                        almes = "alert('Username già in uso, scegline una diversa.');"
                        Page.ClientScript.RegisterClientScriptBlock(Me.GetType(), "MyScript", almes, True)
     
    
                End Try
            End If
        End Sub
    W la Ferari effetrenavenave!
    il computer è un somaro veloce! (neanche tanto ndr)

  3. #3
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Allora, dentro If rs.HasRows Then metti l'istruzione per generare l'errore throw new exception("blabla")

    Il codice va subito dentro il blocco Catch impedendo l'inserimento del record.
    Viene garantita la chiusura della connessione perchè sei dentro il blocco using.

    Dentro il blocco Catch metti il codice per mostrare all'utente il messaggio.

    e.cancel=true non serve (credo )

    comunque, PROVA e fai sapere

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