Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it L'avatar di gg1
    Registrato dal
    Aug 2007
    Messaggi
    3

    utilizzo di espressioni c# nel file .aspx

    Ciao a tutti,
    ho un problema con le pagine aspx.

    Quello che avrei intenzione di fare, è inserire come valore dell'attributo href una proprietà statica di una classe che fa da wrapper per il web.config.

    Questa la classe:

    codice:
    public class Configuration
    {
        public static string getBaseUrl
        {
            get { return ConfigurationManager.AppSettings["BASE_URL"]; }
        }
        .
        .
        .
    }
    e all'interno del file .aspx, vorrei essere in grado di visualizzare il valore restituito dalla classe...
    per ora l'unica maniera nella quale non mi da errore, ma che non restituisce nulla nel flusso html, è questa:

    codice:
    [*]<a href="<asp:Literal runat='server' Text='<%= nome_namespace.Configuration.getBaseUrl %>' />">home</a>
    in pratica vorrei fare in modo che il valore dato dalla proprietà getBaseUrl venga messa nell'html risultante... mentre ora, pur non dando errore, mi da un markup come questo:

    <a href="">home</a>

    Vi ringrazio anticipatamente.

    Daniele.

  2. #2
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Non ho provato, funziona così?

    <%= nome_namespace.Configuration.getBaseUrl %>
    Pietro

  3. #3
    Utente di HTML.it L'avatar di gg1
    Registrato dal
    Aug 2007
    Messaggi
    3
    grazie per la risposta, allora...
    in effetti mi sono accorto adesso di avere scritto una cavolata, in realtà il codice che ho scritto non va bene, era una prova che avevo fatto... quella che non mi da errore è uguale ma con il tag "<%#".

    Comunque, il modo che mi hai segnalato è stato uno dei primi che ho provato, ma non c'è stato verso, mi restituiva un'errore a runtime.

    Apparentemente l'unico modo per richiamare un valore definito nel codice è con l'utilizzo degli itemtemplate, e sfruttando i metodi bind o eval dell'oggetto databinder, ma questo non è il mio caso.
    Mi pare strano che non sia previsto un metodo semplice per usare un espressione.
    Anche se la mia soluzione attuale (col literal) funzionasse, mi sembrerebbe eccessivamente... impegnativa... vorrei una soluzione come quella che mi hai proposto.

    Un'altra possibilità che mi è venuta in mente, sempre col literal, è di associare alla sua proprietà text il valore di getBaseUrl lato codice, ma è una soluzione che, in caso volessi variare il numero di link nella pagina aspx, mi costringe ad effettuare una nuova assegnazione nel codice...

    In questo caso la soluzione sarebbe percorribile, ma ho avuto in precedenza casi nei quali sapere un metodo "più veloce" mi avrebbe aiutato oltre a fornire codice più "pulito", evitando inutili ripetizioni... e saperlo potrebbe quindi agevolarmi in futuro.

    Grazie,
    Daniele.

  4. #4
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Ti rispondo in basic, ma, se vuoi continuare, tu puoi rispondere pure in c#.

    Basta fare un esempio.

    Nel web.config ho questa riga:

    codice:
    <configuration>
    	<appSettings>
    		
    		<add key="com.gama_system.www.servertime" value="http://www.gama-system.com/webservices/servertime.asmx"/>
    		***
    nel codice ho questa classe:
    codice:
    Public Class Configuration
        Public Shared ReadOnly Property getBaseUrl() As String
            Get
                Return System.Configuration.ConfigurationManager.AppSettings("com.gama_system.www.servertime")
            End Get
        End Property
    
    End Class
    e finalmente, nella pagina, NON IN UN CONTROLLO SERVER ho:

    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>Pagina senza titolo</title>
    </head>
    <body>
        <form id="form1" runat="server">
        <div>
            <%=Configuration.getBaseUrl%>
        </div>
        </form>
    </body>
    </html>
    che funziona benissimo alla prima volta :ignore:


    Perciò, non vedo proprio il problema, almeno che non siano diverse le condizioni al contorno, cha hai tranquillamente tralasciato di farcele conoscere, ma che sono fondamentali per capire il problema. Ciao
    Pietro

  5. #5
    Utente di HTML.it L'avatar di gg1
    Registrato dal
    Aug 2007
    Messaggi
    3
    Ciao Pietro,
    confermo quello che hai detto... funziona senza problemi!
    Ho fatto solo due modifiche,
    [list=a][*]modificato il nome della classe da Configuration a ConfigData, in quanto esite un namespace con lo stesso nome, per cui ho preferito fare così[*]ho aggiunto un namespace prima della classe, in quanto altrimenti mi dava il seguente errore:
    Messaggio di errore del compilatore: CS0103: Il nome 'ConfigData' non esiste nel contesto corrente.
    [/list=a]
    comunque, adesso, con questa
    codice:
    [*]home
    funziona tutto a meraviglia!

    Per quanto riguarda le condizioni al contorno... beh, sono piuttosto nuovo dell'ambiente .net, e vedo ogni giorno che di queste condizioni ne spuntano sempre di nuove... per cui non saprei darti informazioni in merito...

    Ad ogni modo, ti ringrazio molto per la tua disponibilità e per l'aiuto che mi hai dato,
    Daniele.

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.