Visualizzazione dei risultati da 1 a 10 su 10

Discussione: Menu e user control

  1. #1
    Utente di HTML.it L'avatar di Sonikag
    Registrato dal
    Mar 2004
    Messaggi
    2,080

    Menu e user control

    Ho un user control nel quale ho inserito il mio menu...

    Vorrei che il class="current" vada sulla pagina in cui è caricato il mio uc...
    Come è meglio che proceda?
    Non trovo un metodo che mi soddisfi...

  2. #2
    Per evitare di dover riscrivere ogni volta questo menu e supponendo che la tua usercontrol contenente il menu abbia la proprietà InnerHtml (ereditanto direttamente da HtmlGenericControl), puoi scrivere una sola riga di codice che risolve tutto:

    codice:
                TuaUserControl.InnerHtml = TuaUserControl.InnerHtml.Replace(string.Format("href=\"{0}\"",
                    System.IO.Path.GetFileName(System.Web.HttpContext.Current.Request.CurrentExecutionFilePath)),
                    string.Format("href=\"{0}\" class=\"current\"",
                    System.IO.Path.GetFileName(System.Web.HttpContext.Current.Request.CurrentExecutionFilePath)));
    Può sembrare complesso o difficile ma non fà altro che sostituire al link della pagina corrente lo stesso link affiancando class="current". Spero di sia di aiuto.
    Chi sbaglia, apprende meglio di chi non ha mai commesso errori.
    DOT.NET Addicted since 2006 (My Blog)

  3. #3
    Moderatore di ASP.net L'avatar di djciko
    Registrato dal
    Nov 2002
    Messaggi
    6,887
    mi sa che la domanda non l'ho capita :master:

    vuoi aggiungere class="current" nella pagina che ospita lo UC e non nello UC stesso ?

  4. #4
    Utente di HTML.it L'avatar di Sonikag
    Registrato dal
    Mar 2004
    Messaggi
    2,080
    Ho la vaghissima sensazione di aver spiegato male

    Allora al momento nel mio user control c'è il codice html che ho copiato pari pari, senza nulla di dinamico, non ho fatto altre mosse!

    Quelloche vorrei ottenere è che al caricamento ci sia questo controllo:
    il menu è caricato nella pagina index.aspx?
    Si scrivo:[*]<span>Home</span>
    No scrivo:[*]<span>Home</span>

    Dite sia il casod i metterlo in un repeater e riga per riga fare il controllo?

  5. #5
    No... dico che il div contenente il menu lo fai runat="server" e poi ci metti nel codice quello che ti ho scritto prima
    Chi sbaglia, apprende meglio di chi non ha mai commesso errori.
    DOT.NET Addicted since 2006 (My Blog)

  6. #6
    Moderatore di ASP.net L'avatar di djciko
    Registrato dal
    Nov 2002
    Messaggi
    6,887
    Ho capito, vuoi evidenziare la voce cliccata dandole la classe current.

    Il metodo suggerito da Roby credo sia una soluzione.
    Oppure dovresti operare all'interno dello UC, rilevando la pagina in cui ti trovi (con una istruzione appunto, come System.Web.HttpContext.Current.Request.CurrentExec utionFilePath) e dando lo style al link interessato.

  7. #7
    Utente di HTML.it L'avatar di Sonikag
    Registrato dal
    Mar 2004
    Messaggi
    2,080
    mmm grazie ma non mi è molto chiara la cosa :master:

    Ho fatto un tentativo e il mio

    <div id="tabs1"> l'ho trasformato in <div id="tabs1" runat="server">
    e quando vado a visualizzare la mia pagina si trasforma in
    <div id="header_tabs1">

    nel page load del mio user control ho messo:

    codice:
    tabs1.InnerHtml = tabs1.InnerHtml.Replace(string.Format("href=\"{0}\"",
            System.IO.Path.GetFileName(System.Web.HttpContext.Current.Request.CurrentExecutionFilePath)),
    string.Format("href=\"{0}\" class=\"current\"",
         System.IO.Path.GetFileName(System.Web.HttpContext.Current.Request.CurrentExecutionFilePath)));
    Se non ho capito male il codice dovrebbe aggiungere dopo href il current giusto? In ogni modo ho sbagliato qualcosa visto che non funzia.

  8. #8
    Utente di HTML.it L'avatar di Sonikag
    Registrato dal
    Mar 2004
    Messaggi
    2,080
    ALLLTTT!!! La solita distratta rimangio tutto!!! Funziona
    Il current è al suo posto
    L'unica cosa che cambiando l'id perdo gli stili, ma cambiando il nome dello stile tutto funzia (almeno spero devo ancora provare :P)
    Grazie mille

  9. #9
    ok, l'importante e che funzioni!
    Chi sbaglia, apprende meglio di chi non ha mai commesso errori.
    DOT.NET Addicted since 2006 (My Blog)

  10. #10
    Moderatore di ASP.net L'avatar di djciko
    Registrato dal
    Nov 2002
    Messaggi
    6,887
    Per aggiungere un'altra soluzione, ho trovato uno UC che feci mesi fa, era simile al tuo ed alla soluzione di Roby.
    Adattandolo verrebbe :


    ASPX dello UserControl:
    codice:
    <%@ Control Language="VB" AutoEventWireup="false" CodeFile="menu.ascx.vb" Inherits="usercontrols_menu_selezionato_menu" %>
      <div id="tabs1">
          <ul>  [*]
                  <a href="default.aspx" title="Home page">
                    <asp:Label ID="voce_home" runat="server" Text="Home"></asp:Label>
                  </a>
              [*]
                  <a href="pagina2.aspx" title="Pagina2">
                    <asp:Label ID="voce_pagina2" runat="server" Text="Pagina 2"></asp:Label>
                  </a>
              [*]
                  <a href="pagina3.aspx" title="Pagina3">
                    <asp:Label ID="voce_pagina3" runat="server" Text="Pagina 3"></asp:Label>
                  </a>
              [/list]
      </div>
    Code-Behind dello UserControl:
    codice:
        Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    
            ' STILE DELLA VOCE SELEZIONATA
            Dim stile As New Style
            stile.BackColor = Drawing.Color.Yellow
            stile.Font.Bold = True
    
            ' APPLICO LO STILE
            Select Case Trim(LCase(System.IO.Path.GetFileName(System.Web.HttpContext.Current.Request.CurrentExecutionFilePath)))
                Case "default.aspx"
                    voce_home.ApplyStyle(stile)
                Case "pagina2.aspx"
                    voce_pagina2.ApplyStyle(stile)
                Case "pagina3.aspx"
                    voce_pagina3.ApplyStyle(stile)
            End Select
    
        End Sub

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