IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
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 MVC Discussion :

Générer dynamiquement un attribut de balise html


Sujet :

ASP.NET MVC

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 25
    Par défaut Générer dynamiquement un attribut de balise html
    Bonjour,

    Désolé, je poste pas mal ces derniers temps mais j'ai à nouveau une question :
    Peut-on générer dynamiquement un attribut (href de la balise link par exemple) à l'aide de la classe Html? Je m'explique, quelle sont les recommandations pour faire ce genre de chose dans la View :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <link rel="shortcut icon" type="image/x-icon" href="/Image/<%= Html.Encode(Model.IconPrefix) %>category.ico" />
    Ce code ne fonctionne pas, à cause des imbrications de balises. Alors comment faire? Faut-il générer toute la balise <link>?

    Merci d'avance

  2. #2
    Membre Expert Avatar de Arthis
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    1 265
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : Italie

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 265
    Par défaut
    de la meme facon que tu as des HtmlHelper, je te conseille quelque chose comme ceci :

    Code : 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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    public static class AppHelper
    {
     
        #region Url
        /// <summary>
        /// Builds an Image URL
        /// </summary>
        /// <param name="imageFile">The file name of the image</param>
        public static string ImageUrl(string imageFile)
        {
            return VirtualPathUtility.ToAbsolute("~/views/content/images/" + imageFile);
        }
     
        /// <summary>
        /// Builds a CSS URL
        /// </summary>
        /// <param name="cssFile">The name of the CSS file</param>
        public static string CssUrl(string cssFile)
        {
            return VirtualPathUtility.ToAbsolute("~/views/content/css/" + cssFile);
        }
     
        /// <summary>
        /// Builds a javascript URL
        /// </summary>
        /// <param name="cssFile">The name of the CSS file</param>
        public static string JavascriptUrl(string javascriptFile)
        {
            return VirtualPathUtility.ToAbsolute("~/views/content/Scripts/" + javascriptFile);
        }
     
        /// <summary>
        /// Builds a javascript URL
        /// </summary>
        /// <param name="cssFile">The name of the CSS file</param>
        public static string SharedViewsUrl(string viewFile)
        {
            return VirtualPathUtility.ToAbsolute("~/Views/Shared/" + viewFile);
        }
        #endregion
     
        #region Controller
     
        /// <summary>
        /// Gives the url to math the localisation controller
        /// </summary>
        /// <param name="actioname"></param>
        /// <returns></returns>
        public static string ControllerLocalisation(string actioname)
        {
            return string.Format("/Localisation.aspx/{0}/", actioname);
        }
     
     
        #endregion
     
     
    }
    ce qui te donne ensuite par exemple dans ta master :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <link href="<%= AppHelper.CssUrl("v3.css") %>" rel="stylesheet" type="text/css" />
     
    <script type="text/javascript" src="<%= AppHelper.JavascriptUrl("jquery-1.3.2.min.js")%>"></script>
    Ensuite rien ne t'empêche de générer complètement toute la balise link, mais est ce vraiment utile. Je n'ai pas encore tranché personnellement.

    petit apparté, j'utilise la fonction statique ControllerLocalisation afin de pouvoir changer mes chemins facilement, même en faisant des appels via Jquery.

    Bon code à toi,

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 25
    Par défaut
    OK, merci pour la piste Arthis

  4. #4
    tomny
    Invité(e)
    Par défaut
    Bonjour,
    moi j'ai ce code dans ma master page (mais également dans les autres) qui fonctionne très bien :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <link href="<%=ApplicationInstance.Request.ApplicationPath %>/Content/menu.css" rel="Stylesheet" type="text/css" media="screen" id="MenuCss" />
    Serait ce une erreur d'écrire ceci ???

    Cordialement,

    Thomas

  5. #5
    Membre Expert Avatar de Arthis
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    1 265
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : Italie

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 265
    Par défaut
    Il n'y a pas d'erreur a proprement parler. La façon que j'ai décrite ci dessus permet juste de pouvoir changer l'architecture de son site plus aisément.

    Dans ton code tu mets ta feuille de style dans le répertoire content. Si Demain pour des raison x ou y, tu voulais plutôt avoir content/styles, et bien avec ma méthode tu n'aurais qu'a le changer dans la fonction CssUrl() et toutes tes pages seraient automatiquement affectée.

  6. #6
    tomny
    Invité(e)
    Par défaut
    L'argument se tient
    Bon bah je vais de ce pas retranscrire ceci en vb.net

    [Edit]
    Alors j'ai commencé le passage vers un module VB, mais il semble qu'il me faudrait enregistrer mon module quelque part pour qu'il soit visible à la construction de la page ... mais je ne sais ou
    Pour info mon module est dans models

    Cordialement,

    Thomas
    Dernière modification par tomny ; 07/04/2010 à 15h06. Motif: Petit souci avec VB...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XSLT] Mettre des données dans un attributs de balise html
    Par Jimmy_S dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 03/01/2008, 16h04
  2. générer dynamiquement l'attribut name dans <jsp:setProperty
    Par anthropo dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 29/08/2006, 17h49
  3. Réponses: 1
    Dernier message: 06/06/2006, 09h47
  4. Accès aux attributs d'une balise HTML
    Par tatou42 dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 09/02/2006, 14h01
  5. Réponses: 2
    Dernier message: 07/07/2005, 18h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo