• User

    file .aspx parte del codice non è letto

    ho creato questo file nominato menu.inc che includo nella pagina.aspx con questo script:

    <%@ Page Language="vb" %>
    <html>
    <body>
    <%
    Response.WriteFile ("menu.inc")
    %>
    </body>
    </html>

    il problema è questo:
    quando richiamo il file pagina.aspx viene eseguito solo una parte del codice (quello in blu), la parte del codice in rosso non è letto.
    Dov'è l'errore?

    <%@ 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>


  • Super User

    Ciao Zeck, quello che stai facendo è sbagliato, perchè Response.WriteFile scrive il contenuto del file nell'output, mentre tu devi eseguire il contenuto del file, quindi devi usare una cosa diversa, tipo l'include.


  • User

    ...ok!!
    Dunque, se lo scrivo così

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

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

    </html>

    viene eseguita solo una parte di "menu.inc"

    se lo scrivo così

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

        <!--#include file="menu.inc"-->
    

    </body>
    </html>

    non viene eseguito nulla!

    *Come devo impostare per far eseguire completamente il file menu.inc?
    *


  • Super User

    Che vuol dire che non viene eseguito nulla? In ogni caso, non puoi mettere i tag html e body in entrambi file, perchè senò nel file finale ci sono due volte!!!


  • 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...