• User

    ciao cali1981,
    probabilmente non mi spiego bene.

    Ho questo script che vorrei ripetere su più pagine:

    <%@ Page Language="VB" %>
    <html dir="ltr" xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
    <meta http-equiv="Content-Language" content="it">
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Untitled 1</title>
    </head>
    <body>
    <form id="form1" runat="server">
    **<table style="width: 100%">
    <tr>
    <td bgcolor="#008000">Pagina</td>
    </tr>
    ****<tr>
    <td>
    <asp:Menu runat="server" id="Menu1" BackColor="Red" BorderColor="Navy" BorderStyle="Solid" BorderWidth="1px" Font-Bold="True" Orientation="Horizontal">
    <Items>
    <asp:menuitem Text="1" Value="1">
    </asp:menuitem>
    <asp:menuitem Text="2" Value="New Item">
    </asp:menuitem>
    <asp:menuitem Text="3" Value="New Item">
    </asp:menuitem>
    </Items>
    </asp:Menu>
    </td>
    </tr>
    **</table>
    </form>
    </body>
    </html>

    salvo lo script che chiamiamo menu.inc.

    A questo punto creo una pagina (nome pagina.aspx) che richiami il contenuto di **menu.inc **con questo script:

    **<%@ Page Language="vb" %>
    <html>
    <body>

    <%
    Response.WriteFile ("menu.inc")
    %>

    </body>
    </html>
    **
    carico tutto e apro la pagina "pagina.aspx" cosa vedo?
    La tabella verde con la scritta Pagina, cioè la parte scritta in blu del file menu.inc

    <table style="width: 100%">
    <tr>
    <td bgcolor="#008000">Pagina</td>
    </tr>

    mentre questa parte in rosso che contiene un menu di navigazione non viene letta

    <tr>
    <td>
    <asp:Menu runat="server" id="Menu1" BackColor="Red" BorderColor="Navy" BorderStyle="Solid" BorderWidth="1px" Font-Bold="True" Orientation="Horizontal">
    <Items>
    <asp:menuitem Text="1" Value="1">
    </asp:menuitem>
    <asp:menuitem Text="2" Value="New Item">
    </asp:menuitem>
    <asp:menuitem Text="3" Value="New Item">
    </asp:menuitem>
    </Items>
    </asp:Menu>
    </td>
    </tr>


    Dov'è l'errore?
    E' sbagliata la pagina menu.inc o sbaglio il codice in pagina.aspx?
    Se è sbagliata pagina.aspx qual' lo script completo che andrebbe scritto?

    grazie 1000 per la tua disponibilità


  • Super User

    Come ti ho detto prima, quello che hai dentro menu,inc non è uno script ma è una pagina aspx, che se viene inclusa in un'altra pagina aspx crea un casino, perche vede due volte i tag di apertura di html e body. Potresti postare l'aoutput preciso che ha quando vedi pagina.aspx?


  • User

    Ciao Zeck,

    In Asp.net gli include non si usano (francamente non so nemmeno se sono supportati...). Hai quindi 2 alternative:

    • Master page
    • User controlVisto che a quanto ho capito il menu dovrebbe essere riproposto in tutte le pagine ti conviene creare una master page contenente il menu e poi crei le pagine a cui occorre il menu, impostando sulla pagina la master page che hai creato.

    Altrimenti metti la tabella contenente il menu in una User Control e poi richiami la User Control nelle pagine in cui vuoi che siano presenti i menu.

    Spero di averti aiutato
    :ciauz:


  • User

    come suggerito ho usato la master page per richiamare un "titolo" comune a più pagine, lo script prodotto è questo:

    <%@ Page Language="VB" masterpagefile="Titolo.master" title="Untitled 1" %>

    Domanda:
    come si fa ad aggiungere una seconda master page contenete il menu?(sempre per il concetto di voler ripetere su più pagine stessi contenuti)
    Ho provato ma due richiami a master page non sono accettati.:?


  • Super User

    Non puoi mettere il menu nella stessa master page?


  • User

    @zeck said:

    come suggerito ho usato la master page per richiamare un "titolo" comune a più pagine, lo script prodotto è questo:

    <%@ Page Language="VB" masterpagefile="Titolo.master" title="Untitled 1" %>

    Domanda:
    come si fa ad aggiungere una seconda master page contenete il menu?(sempre per il concetto di voler ripetere su più pagine stessi contenuti)
    Ho provato ma due richiami a master page non sono accettati.:?

    vorrei provare anche con le user control ma non riesco a trovare lo "script" per richiamare la pagina, qualcuno mi può aiutare? grazie


  • User

    @cali1981 said:

    Non puoi mettere il menu nella stessa master page?
    si posso, ma si ripropone il problema con tabelle di testo ecc.
    vorrei trovare una soluzione che permetta di inserire in una pagina contenuti creati singolarmente.


  • User

    con php è una cosa possibile; basta fare

    <?php
    include '_menu.php';
    ?>

      <?php
    

    include 'php/scheda_tecnica.php';
    ?>

    e si hanno due "tabelle" indipendenti una sopra l'altra.

    Possibile che in ASP.NET non si riesca a fare una cosa del genere?


  • Super User

    Puoi fare un user control, se usi VS basta che lo trascini nella pagina dove vuoi metterlo. Per quanto riguarda la master page, cosa intendi che poi avresti problemi con le tabelle di testo?
    Per l'inserimento dell'UserControl in asp.net devi registrarlo in cima alla pagina con:

    <%@ Register TagPrefix="MyUC" TagName="Test" Src="uc.ascx" %>

    E poi dentro puoi usarlo con

    <MyUC:Test runat="server" />


  • User

    Grazie cali1981 per il tuo aiuto!

    non ho VS, vorrei riuscire a far funzionare il codice che hai postato:
    <%@ Register TagPrefix="MyUC" TagName="Test" Src="uc.ascx" %>
    dentro
    <MyUC:Test runat="server" />

    ma non ci riesco!!

    il file che vorrei inserire sono questi:

    _menu.ascx
    _titolo.ascx

    come devo scrivere questo
    <%@ Register TagPrefix="MyUC" TagName="Test" Src="uc.ascx" %> ?
    e questo
    <MyUC:Test runat="server" /> ?

    grazie


  • Super User

    Provato con

    <%@ Register TagPrefix="ucMenu" TagName="menu" Src="menu.ascx" %>

    <ucMenu:menurunat="server" />


  • User

    @cali1981 said:

    Provato con

    <%@ Register TagPrefix="ucMenu" TagName="menu" Src="menu.ascx" %>

    <ucMenu:menurunat="server" />

    appare questo errore (vedi jpg allegata)

    Ho impostato le pagine così:

    pagina che deve caricare il file menu1.ascx

    **<%@ Register TagPrefix="ucMenu1" TagName="menu1" Src="menu1.ascx" %>
    **<html dir="ltr" xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>prova</title>
    </head>
    <body>
    **<ucMenu1: menu1 runat="server" />
    **<form id="form1" runat="server">
    </form>
    </body>
    </html>

    menu1.ascx

    <%@ Register TagPrefix="ucMenu1" TagName="menu1" Src="menu1.ascx" %>
    <head>
    <style type="text/css">
    .style1 {
    background-color: #008000;
    }
    .style2 {
    background-color: #FF00FF;
    }
    </style>
    </head>
    <table style="width: 100%">
    <tr>
    <td class="style1"> </td>
    <td> </td>
    </tr>
    <tr>
    <td class="style2"> </td>
    <td> </td>
    </tr>
    </table>


  • Super User

    Il file menu1.ascx non deve contenere register!


  • User

    Come diceva Cali, la direttiva register va messa solo nella pagina che richiama la usercontrol, **non **nella usercontrol stessa.

    Inoltre hai inserito questo HTML nel file menu.ascx
    [HTML]
    <head>
    <style type="text/css">
    .style1 {
    background-color: #008000;
    }
    .style2 {
    background-color: #FF00FF;
    }
    </style>
    </head>
    <table style="width: 100%">
    <tr>
    <td class="style1"> </td>
    <td> </td>
    </tr>
    <tr>
    <td class="style2"> </td>
    <td> </td>
    </tr>
    </table>
    [/HTML]
    ma è sbagliato, poichè non deve esserci alcun tag head in un usercontrol (poiché lo richiami all'interno del tag body), e gli stili li devi definire all'esterno dello UserControl, ad esempio in un file css che includi tramite la pagina chiamante. Quindi il contenuto corretto del menu sarrebbe questo
    [HTML]
    <table style="width: 100%">
    <tr>
    <td class="style1"> </td>
    <td> </td>
    </tr>
    <tr>
    <td class="style2"> </td>
    <td> </td>
    </tr>
    </table>
    [/HTML]

    Cmq, come avrai capito gli include del php si traducono in UserControl in Asp.net (non è sempre vero, ma in linea di massima si..).

    :ciauz:


  • User

    @Holin said:

    Quindi il contenuto corretto del menu sarrebbe questo
    [html]
    <table style="width: 100%">
    <tr>
    <td class="style1"> </td>
    <td> </td>
    </tr>
    <tr>
    <td class="style2"> </td>
    <td> </td>
    </tr>
    </table>
    [/html]

    Cmq, come avrai capito gli include del php si traducono in UserControl in Asp.net (non è sempre vero, ma in linea di massima si..).
    :ciauz:

    Grazie, tutto Ok!! 🙂
    Ho fatto come avete suggerito voi e in effetti il file viene riconosciuto e "incluso" nella pag .aspx.
    Domanda:
    se provo a inserire un menu fatto in asp nella pagina .ascx la pagina in .aspx non viene più letta!!:x

    [html]
    <table style="width: 100%">
    <tr>
    <td class="style1"> </td>
    <td>

    <asp:Menu runat="server" id="Menu1" BackColor="#B5C7DE" Font-Size="0.8em" Font-Names="Verdana" StaticSubMenuIndent="10px" ForeColor="#284E98" DynamicHorizontalOffset="2">

    <StaticMenuItemStyle HorizontalPadding="5px" VerticalPadding="2px" />
    <DynamicHoverStyle BackColor="#284E98" ForeColor="White" />
    <DynamicMenuStyle BackColor="#B5C7DE" />
    <StaticSelectedStyle BackColor="#507CD1" />
    <DynamicSelectedStyle BackColor="#507CD1" />
    <DynamicMenuItemStyle HorizontalPadding="5px" VerticalPadding="2px" />
    <StaticHoverStyle BackColor="#284E98" ForeColor="White" />

    </asp:Menu>

    </td>
    </tr>
    <tr>
    <td class="style2"> </td>
    <td> </td>
    </tr>
    </table>
    [/html]

    E' un problema di compatibilità tra asp e asp.net??:bho:
    Se si come converto quel tipo di menu in asp.net?:?

    Grazie 1000 per il vostro aiuto.


  • Super User

    Si certo, non puoi mettere asp e asp.net insieme, anche in asp c'è il menu, con vs lo trovi nel toolbox...


  • User

    @cali1981 said:

    Si certo, non puoi mettere asp e asp.net insieme, anche in asp c'è il menu, con vs lo trovi nel toolbox...

    Ciao cali1981, immagino che per vs intendi visual studio, giusto?
    Beh, se è visul studio è proprio da li che ho preso quello script del menu.

    Vorrei riuscire ad arrivare ad una conclusione:
    a) continuo ad usare le pagina ascx e aspx e allora (se ho capito bene) devo trovare lo script di un menu per asp.net (giusto? ne avete uno orizzontale con le finestre che si aprono con mouse on?)
    b) cambio e suo pagine asp (a questo punto non sono in grado di "includere" pagine) chi mi aiuta con lo script per a pagina che ho postato prima?

    grazie


  • Super User

    Quello che serve a te è il css di un menu orizzontale, perchè nello script del menu in asp.net tu metti solo le voci di menu (o il file sitemap da cui prenderle) poi colleghi un file css. Quindi non si tratta di c#. Uno script per il menu potrebbe essere quello che hai fatto tu con qualche modifica, puoi trovare una bella descrizione qui : eggheadcafe.com/articles/20050531.asp


  • User

    @cali1981 said:

    Quello che serve a te è il css di un menu orizzontale, perchè nello script del menu in asp.net tu metti solo le voci di menu (o il file sitemap da cui prenderle) poi colleghi un file css. 😮 😢 :bho:

    come collego il file css??
    Ipotizziamoi che devo visulaizzare il menu qui (è parte di un file ascx):

    <td colspan="2">QUI</td>

    come lo scrivo collegando solo il file css? :mmm:
    non avresti un esempio di ascx con all'interno un richiamo di menu css?


  • User

    Io non ho capito se vuoi usare il componente menu di asp.net o vuoi farne uno nuovo tu..

    Nel caso in cui vuoi farne uno nuovo devi:

    • fare il css per il menu
    • collegare il css con il tag link nell'head della pagina
    • creare la struttura del menu nel punto in cui vuoi che compaia
    • se hai dubbi cerca "menu a comparsa css" su google.. ne dovresti trovare a iosa di esempiNel caso in cui vuoi usare il componente menu di asp.net devi:
    • scarica gli adattatori per i componenti di asp.net (vvv.asp.net/cssadapters/). Servono a fare in modo tale che asp.net generi codice che sia modificabile tramite CSS per alcuni componenti, tra cui anche il menu
    • generi un progetto nuovo usando lo scheletro che ti hanno isntallato i cssadapters (se usi vs 2005)
    • crei il componente Menu (toolbox->navigation->menu) nel punto in cui vuoi visualizzarlo
    • lo riempi
    • poi prendi il css che serve (se non mi sbaglio si chiama proprio CSS/menu.css) e lo modifichi come serve a te
    • colleghi il css alla pagina contenente il menu
    • se hai dubbi sull'utilizzo dei cssadapters basta che guardi gli esempi di corredo, sono molto semplici.Spero di essere stato chiaro e di aiuto
      :ciauz: