Visualizzazione dei risultati da 1 a 8 su 8
  1. #1

    accedere a funzioni create in classi da rendering inline

    buonasera

    pongo subito la domanda facendo degli esempi

    1) creo una classe nominata ClasseGenerica e nella stessa creo una funzione chiamta FixTxt che mi servirà per togliere gli apici quando andrò ad inserire testo in un db (

    codice:
    public class Classegenerica
    
    public function FixTxt(valore as string) as string
         return replace(valore,"'","''")
    end function
    
    end class
    2) creo pagina VediValore.aspx con code behind VediValore.aspx.vb

    quello che vorrei fare, sarebbe accedere alla funzione "FixTxt" insita nella classe "ClasseGenerica", non da code behind, bensì dal "rendering inline" della pagina, qundi

    codice:
    <html>
    <%=FixTxt("testo prova")%>
    </html>
    Da code behind, una volta importata la classe, chiaramente riesco senza nessun problema, ma non è questo il mio intento.

    Grazie in anticipo e auguri :-)
    Il codice scritto sopra è puramente esemplificativo e stringato, per cui chiedo scusa ai puristi, sperando che qualcuno mi possa illuminare su questo dubbio.

  2. #2
    scritto così è errato, poiché è una chiamata semplice ad una funzione che dovrebbe quindi stare dentro il codebehind della pagina.

    Innanzi tutto io metterei la classe Classegenerica statica (ad anche il metodo di conseguenza).

    Poi dalla tua pagina puoi fare:
    codice:
    <html>
    <%=Classegenerica.FixTxt("testo prova")%>
    </html>
    P.S.: occhio ai namespace

  3. #3
    Ti ringrazio per la celerità.

    Putroppo per ora non sono a casa e non posso effettuare il test con il consiglio da te dato.

    Stasera o domani proverò e ti farò sapere.

    Grazie ancora :-)

  4. #4
    Caro Gluck74

    ti comunico che il consiglio da te fornitomi funziona benissimo (namespace compresi)

    A seguire l'esempio

    La classe (che ho compilato creando una dll il cui assembly ha nome ClassiGeneriche nella cartella Bin):
    codice:
    Namespace FunzioniGenerali
        Public Class Funzioni
            Public Shared Function FixTxt(ByRef testo As String) As String
                Return Replace(testo, "'", "''")
            End Function
    End Class
    End Namespace
    La funzione richiamata nel "rendering InLine"
    codice:
    <%@ Page Language="VB" AutoEventWireup="false" CodeFile="prova.aspx.vb" Inherits="prova" %>
    <!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>
    </head>
    <body>
        <form id="form1" runat="server">
        <div>
        <%= ClassiGeneriche.FunzioniGenerali.Funzioni.FixTxt("un'amica")%>
        </div>
        </form>
    </body>
    </html>
    ed infine l'Output che chiaramente è:
    un''amica

    Alla prossima.

  5. #5
    Moderatore di ASP.net L'avatar di djciko
    Registrato dal
    Nov 2002
    Messaggi
    6,887
    Una mia vecchia funzione li rimpiazza con ’ (virgolette inglesi)
    Usando il tuo codice verebbe:

    codice:
    Return Replace(testo, "'", "’")


    ps: per chiudere il codice devi scrivere [ / code ] (senza spazi)

  6. #6
    Ciao djciko

    Una mia vecchia funzione li rimpiazza con ’ (virgolette inglesi)
    interessante soluzione, si evitano così scritture poco leggibili (anche se funzionali) sui database...da provare!

    per chiudere il codice devi scrivere [ / code ] (senza spazi)
    Ok, mi ero reso conto dell'errore tardi, dato che lo hai correto tu. Scusa per "l'anomalia".

    Pongo un'altra domanda:

    se volessi utilizzare la stessa procedura, però su un controllo server:
    codice:
    <asp:Label ID="LblTitolo" runat="server" CssClass="Titolo"></asp:Label>
    dato che scrivendo in tal modo:
    codice:
    <asp:Label ID="LblTitolo" runat="server" CssClass="Titolo" text='<%= ClassiGeneriche.FunzioniGenerali.Funzioni.FixTxt("un'amica")%>'></asp:Label>
    oppure:
    codice:
    <asp:Label ID="LblTitolo" runat="server" CssClass="Titolo" text='<%#ClassiGeneriche.FunzioniGenerali.Funzioni.FixTxt("un'amica")%>'></asp:Label>
    etc..., il framework dà risultati inattesi, come dovrei fare (sempre che si possa fare, e sempre da codice "inLine"; NON code behind)?

    Grazie ancora in anticipo.

  7. #7
    Moderatore di ASP.net L'avatar di djciko
    Registrato dal
    Nov 2002
    Messaggi
    6,887
    che intendi per "risultati inattesi" ?

    ("#" è per i controlli sensibili all'operazione di bind, oppure contenuti in essi)

    Un'altra soluzione senza code-behind è inserire il codice nei tag <script runat="server"> ... </script> nell'HTML:
    http://www.w3schools.com/aspnet/aspnet_controls.asp

  8. #8
    che intendi per "risultati inattesi" ?
    Risultati che generano errori tipo:

    codice:
    I tag server non possono contenere costrutti <% ... %>.
    etc...

    Ho comunque cercato meglio, ed a quanto pare, l'unico modo per assegnare valori ai controlli server è tramite Code Behind o dal tag server

    codice:
    <script runat="server"> ... </script>
    Penso che la mia curiosità sia stata esaudita.

    Grazie ancora per la disponibilità e la celerità, ed alla prossima.

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.