Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ASP.NET Discussion :

media url dans web.config


Sujet :

ASP.NET

  1. #1
    Nouveau membre du Club
    media url dans web.config
    Bonjour,

    Je souhaite mettre la racine de mes media dans une cle webconfig.
    l'interet est de pouvoir deplacer mes media et avoir juste une cle dans webconfig a changer.
    du coup dans mes images je mets:
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    src="<%= System.Configuration.ConfigurationManager.AppSettings["urlmedia"]%>


    mais lorsque j'essaie de mettre la meme chose dans un composant asp image, ca plante.

    la seul solution que j'ai trouvé est de mettre dans un page_init en code behind.
    ce qui m'oblige a implementer cette methode parfois inutile dans certaine page.

    y a t il une solution ou une methode plus propre ?

    Merci de votre aide.

  2. #2
    Expert éminent sénior
    Bonjour,

    Tu pourrais être plus précis quand tu dis que "ça plante" ?
    Un message d'erreur peut être ?
    Avant toute chose : lire le mode d'emploi du forum et ses règles.
    Je ne réponds pas aux questions techniques en MP.

  3. #3
    Nouveau membre du Club
    message d'erreur :

    Les balises serveur ne peuvent pas contenir des constructions <% ... %>.

  4. #4
    Modérateur

    Je crois qu'il n'est pas possible de faire ça dans le fichier ASPX. Il faut passer par le code behind.

    Tu peux donc le faire sur chaque page, pour chaque image, ou bien créer ton propre type héritant du type Image par défaut. Dans ce nouveau type, tu overrides la méthode Render() afin d'inclure ton préfixe.
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

  5. #5
    Nouveau membre du Club
    et il n'y pas d'autre methode pour faire ca ?

    le but etant de mettre la racine de l'url du server de media afin de pouvoir changer de serveur en une seule modif plutot de que changer dans toute les pages.

  6. #6
    Expert éminent sénior
    Ben euh que tu le fasses dans le code behind change rien

    Tu peux toujours passer par une variable de configuration

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    protected string urlmedia= System.Configuration.ConfigurationManager.AppSettings["urlmedia"] as string;
     
    protected void Page_Load(object sender, EventArgs e)
        {
               aspImage.ImageUrl = urlmedia;
        }
    Avant toute chose : lire le mode d'emploi du forum et ses règles.
    Je ne réponds pas aux questions techniques en MP.

  7. #7
    Modérateur

    Citation Envoyé par Matt_NewDev Voir le message
    et il n'y pas d'autre methode pour faire ca ?
    Si, en créant ton propre contrôle, comme je l'ai mentionné dans mon post un peu plus haut.

    Disons que tu l'appelles "CustomImage". Il devra hériter du type "System.Web.UI.WebControls.Image". Dans ce contrôle, tu overrides la propriété ImageUrl afin d'aller chercher ton chemin dans le Web.config directement.

    Exemple :

    Code C# :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    using System.ComponentModel;
    using System.Configuration;
    using System.Web.UI;
    using System.Web.UI.WebControls;
     
    [DefaultProperty("ImageUrl")]
    [ToolboxData("<{0}:CustomImage runat=server></{0}:CustomImage>")]
    public class CustomImage : Image
    {
        [Bindable(true)]
        [DefaultValue("")]
        [Localizable(true)]
        public override string ImageUrl
        {
            get
            {
                return ConfigurationManager.AppSettings["ImagesPath"] + "/" + base.ImageUrl;
            }
            set
            {
                 base.ImageUrl = value;
            }
        }
     
        protected override void RenderContents(HtmlTextWriter output)
        {
     
        }
    }


    Utilisation :

    Code ASP.NET :Sélectionner tout -Visualiser dans une fenêtre à part
    <cc1:CustomImage ID="CustomImage1" runat="server" ImageUrl="image.png" />


    avec dans le web.config :

    Code XML :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    <appSettings>
        <add key="ImagesPath" value="/Images" />
    </appSettings>


    Rendu final :

    Code HTML :Sélectionner tout -Visualiser dans une fenêtre à part
    <img id="CustomImage1" src="/Images/image.png" />
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

  8. #8
    Nouveau membre du Club
    Merci pour vos reponses.

    Le but aussi etait de passer par des scriptlets dans la page asp directement.
    ca evite de poser une image dans le code asp et d'etre obligé de faire un appel dans le codebehind juste pour passer ImageUrl.

    J'ai reussi a poser mon url de mon webconfig de la facon suivante :
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    ImageUrl="<%$AppSettings:mediaUrl%>"

    mais il faut que je complete cette url avec l'image.
    J'ai essayé :
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    ImageUrl="<%$AppSettings:mediaUrl%>image.jpg"


    mais ca ne marche pas.

    Je suis ouvert au propositions.

  9. #9
    Inactif  
    Citation Envoyé par Matt_NewDev Voir le message
    Merci pour vos reponses.

    Le but aussi etait de passer par des scriptlets dans la page asp directement.

    Quel avantage à cela ? (à part compliquer la vie de celui qui passe après toi sur l'application).

    Je ne réponds pas aux questions techniques par MP ! Le forum est là pour ça...


    Une réponse vous a aidé ? utiliser le bouton

    "L’ennui dans ce monde, c’est que les idiots sont sûrs d’eux et les gens sensés pleins de doutes". B. Russel

  10. #10
    Expert éminent
    Salut
    Citation Envoyé par Matt_NewDev Voir le message
    Je suis ouvert au propositions.
    Et avec une expression personnalisée: http://dotnet.developpez.com/faq/asp...omexpressesion
    Citation Envoyé par Bluedeep Voir le message
    compliquer la vie de celui qui passe après toi sur l'application
    C'est toujours compliqué de reprendre une application.

    A+
    "Winter is coming" (ma nouvelle page d'accueil)

  11. #11
    Inactif  
    Citation Envoyé par Immobilis Voir le message

    C'est toujours compliqué de reprendre une application.
    Raison de plus pour ne pas en rajouter.

    Je ne réponds pas aux questions techniques par MP ! Le forum est là pour ça...


    Une réponse vous a aidé ? utiliser le bouton

    "L’ennui dans ce monde, c’est que les idiots sont sûrs d’eux et les gens sensés pleins de doutes". B. Russel

  12. #12
    Expert éminent
    Et en quoi serait-ce une mauvaise solution selon toi?
    "Winter is coming" (ma nouvelle page d'accueil)

###raw>template_hook.ano_emploi###