DTD XHTML 1.0 Transitional e ASP.NET

giovedì 16 marzo 2006 - 18.56

l.corallini Profilo | Junior Member

ciao a tutti,

sto utilizzando un'utilissima libreria (BusyBoxDotNet) che consente di visualizzare una finestra di attesa mentre sono in attesa del postback dal server, molto flessibile e customizzabile.
Il problema sta nel dover indicare una nuova direttiva per il Document Type, appunto XHTML 1.0 Transitional invece di HTML 4.0 (impostato di defaul da Visual Studio 2003) e questo causa non pochi problemi al layout con le conseguenze che questo comporta.
Come posso fare per rendere compatibili le pagine che ho creato (non sono poche)?
Esistono delle linee guida per la conversione?

grazie in anticipo

luca
luca

Brainkiller Profilo | Guru

>Il problema sta nel dover indicare una nuova direttiva per il
>Document Type, appunto XHTML 1.0 Transitional invece di HTML
>4.0 (impostato di defaul da Visual Studio 2003) e questo causa
>non pochi problemi al layout con le conseguenze che questo comporta.
>Come posso fare per rendere compatibili le pagine che ho creato
>(non sono poche)?
>Esistono delle linee guida per la conversione?

Ciao,
utilizza come ambiente VS.NET 2005 che ha un validatore per XHTML Strict, Transitional, 1.1 ecc.

Fai uso anche del validatore del W3C per verificare se le tue pagine sono compatibili o meno:
http://validator.w3.org/

Tutte le specifiche su questi standard li trovi su:
http://www.w3c.org

ciao

David De Giacomi
Microsoft MVP
http://blogs.dotnethell.it/david/

l.corallini Profilo | Junior Member

Non posso utilizzare VS 2005 perchè il progetto è stato già sviluppato con VS 2003 e non mi posso sobbarcare l'onere di una conversione anche perchè dovremmo collaudare a breve...

Avevo già dato un'occhiata al sito W3C, comunque ho provato a validate il mio codice con esito negativo, per esempio ho dei problemi con i controlli Label, ma non so come risolvere.

ho provato a convertire la mia pagina .aspx con GoLive CS ma il risultato è stato pessimo in quanto per prima cosa converte tutti i tag server di Asp in tag html, ovvero <asp:label> diventa <label>.

ho provato a vedere se nel nuovo VS 2005 ci fosse un tool di conversione da HTML 4.0 a XHTML 1.0 ma non l'ho trovato.

Che tu sappia non c'è qualche software converter specifico per aspx?

grazie comunque della risposta

luca
luca

Brainkiller Profilo | Guru

>Non posso utilizzare VS 2005 perchè il progetto è stato già sviluppato
>con VS 2003 e non mi posso sobbarcare l'onere di una conversione
>anche perchè dovremmo collaudare a breve...

Non intendevo farti convertire il progetto ma solo usare l'IDE per scrivere le pagine e validarle in tempo reale. Infatti tutti i tag non corretti vengono sottolineati.

>Avevo già dato un'occhiata al sito W3C, comunque ho provato a
>validate il mio codice con esito negativo, per esempio ho dei
>problemi con i controlli Label, ma non so come risolvere.

Eh eh bisogna conoscere l'XHTML.

>ho provato a vedere se nel nuovo VS 2005 ci fosse un tool di
>conversione da HTML 4.0 a XHTML 1.0 ma non l'ho trovato.
>Che tu sappia non c'è qualche software converter specifico per
>aspx?

Mh... si probabilmente ce ne sono ma nel tuo caso ti trovi di fronte a pagine .aspx che poi vengono renderizzate sul server e producono codice HTML a volte diverso da ciò che è presente nella pagina .aspx perchè vengono aggiunte varie cose, viewstate, controlli hidden, ecc.ecc.
Io solitamente procedo così, prendo il codice e lo sparo nel validator del W3C e man mano guardo gli errori e cerco di risolverli. Facendo così impari anche la sintassi e i comandi validi o meno dell'XHTML e dopo le nuove pagine cominci a scriverele rispettando lo standard. in questo modo tendi ad imparare man man ol'XHTML e a scrivere anche pagine XHTML compliant.

Spesso in questi scenari potrebbe essere necessario la riscrittura di tutte le pagine perchè in base alla architettura e alla modularità scelta nel progetto convertire tutto in XHTML potrebbe essere molto dispendioso in termini di tempo.

Se sai le regole XHTML potresti anche creare un handler che prima di restituire la pagina all'utente verifica tutti i tag e reimposta quelli errati per rispettare l'XHTML... ma non so se ne vale la pena, specialmente su documenti HTML scritti senza tenere in considerazione l'XHTML.
Ciao

David De Giacomi
Microsoft MVP
http://blogs.dotnethell.it/david/

l.corallini Profilo | Junior Member


>Non intendevo farti convertire il progetto ma solo usare l'IDE
>per scrivere le pagine e validarle in tempo reale. Infatti tutti
>i tag non corretti vengono sottolineati.

Ah ho capito...in effetti è molto utile anche se mi evidenzia i tag html con incompatibilità, i tag asp non sono evidenzati anche se poi una volta renderizzati dal server e 'tradotti' in html possono non essere conformi allo standard XHTML.
A questo punto come posso sfruttare l'IDE di VS 2005?


>Eh eh bisogna conoscere l'XHTML.

prima di sapere che mi sarebbe servito...

>Mh... si probabilmente ce ne sono ma nel tuo caso ti trovi di
>fronte a pagine .aspx che poi vengono renderizzate sul server
>e producono codice HTML a volte diverso da ciò che è presente
>nella pagina .aspx perchè vengono aggiunte varie cose, viewstate,
>controlli hidden, ecc.ecc.
>Io solitamente procedo così, prendo il codice e lo sparo nel
>validator del W3C e man mano guardo gli errori e cerco di risolverli.
>Facendo così impari anche la sintassi e i comandi validi o meno
>dell'XHTML e dopo le nuove pagine cominci a scriverele rispettando
>lo standard. in questo modo tendi ad imparare man man ol'XHTML
>e a scrivere anche pagine XHTML compliant.


ma butti la pagina aspx così come l'hai creat in VS?

>Spesso in questi scenari potrebbe essere necessario la riscrittura
>di tutte le pagine perchè in base alla architettura e alla modularità
>scelta nel progetto convertire tutto in XHTML potrebbe essere
>molto dispendioso in termini di tempo.

io dovrei riscrivere solo alcune pagine seguendo lo standard XHTML, ovvero solo quelle che utilizzano una libreria che è stata creata seguendo questo standard.
Posso utilizzare VS 2005 per avere l'aiuto dell'IDE e poi portare brutalmente la pagina aspx dentro VS 2003? O posso utlizzare direttamente VS 2003?
>
>Se sai le regole XHTML potresti anche creare un handler che prima
>di restituire la pagina all'utente verifica tutti i tag e reimposta
>quelli errati per rispettare l'XHTML... ma non so se ne vale
>la pena, specialmente su documenti HTML scritti senza tenere
>in considerazione l'XHTML.
>Ciao
>
>David De Giacomi
>Microsoft MVP
>http://blogs.dotnethell.it/david/

ciao

luca

luca

Brainkiller Profilo | Guru

>Ah ho capito...in effetti è molto utile anche se mi evidenzia
>i tag html con incompatibilità, i tag asp non sono evidenzati
>anche se poi una volta renderizzati dal server e 'tradotti' in
>html possono non essere conformi allo standard XHTML.
>A questo punto come posso sfruttare l'IDE di VS 2005?

Certamente l'IDE non ti viene aiuto in tutto.
Se tu poi nel codice server side mi scrivi un:

Response.Write ("<br>");

dove <br> non è corretto ma è corretto <br /> è normale che la pagina non validerà.
Infatti si tende a cercare di non scrivere tag html dal codice server side proprio per questo motivo.
I controlli Microsoft in particolare nel 2.0 producono codice XHTML compliant.

>io dovrei riscrivere solo alcune pagine seguendo lo standard
>XHTML, ovvero solo quelle che utilizzano una libreria che è stata
>creata seguendo questo standard.
>Posso utilizzare VS 2005 per avere l'aiuto dell'IDE e poi portare
>brutalmente la pagina aspx dentro VS 2003? O posso utlizzare
>direttamente VS 2003?

Certamente. I controlli 1.1 sono cmq. compatibili con il 2005. Quindi se tu scrivi in 2005 e poi copi e incolli la pagina (.aspx) in 2003 non ci sono problemi. Naturalmente finchè utilizzi sempre oggetti presenti in 2003. Del tipo se usi la GridView di 2.0 è normale che se poi riporti la pagina nel 2003 non funzioni.

Ciao

David De Giacomi
Microsoft MVP
http://blogs.dotnethell.it/david/

l.corallini Profilo | Junior Member

>Certamente l'IDE non ti viene aiuto in tutto.
>Se tu poi nel codice server side mi scrivi un:
>
>
>Response.Write ("<br>");
>
>
>dove <br> non è corretto ma è corretto <br /> è normale
>che la pagina non validerà.
>Infatti si tende a cercare di non scrivere tag html dal codice
>server side proprio per questo motivo.
>I controlli Microsoft in particolare nel 2.0 producono codice
>XHTML compliant.

Quindi dovrò anche controllare il codice html generato server dide..., lo sospettavo, adesso ne ho la certezza.



>Certamente. I controlli 1.1 sono cmq. compatibili con il 2005.
>Quindi se tu scrivi in 2005 e poi copi e incolli la pagina (.aspx)
>in 2003 non ci sono problemi. Naturalmente finchè utilizzi sempre
>oggetti presenti in 2003. Del tipo se usi la GridView di 2.0
>è normale che se poi riporti la pagina nel 2003 non funzioni.

Credo che all fine la soluzione più rapida (per modo di dire) sia quella di riscrivere interamente con VS 2005 le pagine interessate, e poi portarle all'interno del progetto VS 2003.
Il prossimo progetto lo svilupperò assolutissimamente con VS 2005!!!


>Ciao
>
>David De Giacomi
>Microsoft MVP
>http://blogs.dotnethell.it/david/

ciao e grazie ancora dell'aiuto.
luca

luca

Brainkiller Profilo | Guru

>Quindi dovrò anche controllare il codice html generato server
>dide..., lo sospettavo, adesso ne ho la certezza.

eh si per forza.

>ciao e grazie ancora dell'aiuto.

Ciao se una delle risposte ha esaudito la tua richiesta, accettala premendo sull'apposito link.
In questo modo il Thread viene marcato come risolto.

grazie
ciao

David De Giacomi
Microsoft MVP
http://blogs.dotnethell.it/david/

l.corallini Profilo | Junior Member

ho provato a creare una nuova pagina sfruttando l'IDE di VS 2005, l'ho portato all'interno del mio progetto, ho esguito il codice, ho preso l'HTML e l'ho validato con W3C Validator, e seppur valido l'effetto in IE 6.0 non è quello voluto, addirittura una label in cui avevo scritto il titolo della mia pagina compare la data di sistema....

In compenso dll BusyBoxDotNet, causa di questo tentativo di conversione, però funziona correttamente....

Credo che dovrò rinunciare a fare la conversione e tenermi il custom control con i suoi difetti..

ciao

luca

luca

l.corallini Profilo | Junior Member

ciao.
Ho validato il codice, tutto bene, però non la visualizzo come vorrei.
Sei così gentile da spiegarmi perchè non riesco a visualizzare la tabella HTML di questa semplice pagina aspx come descritto dagli attributi? ovvero perchè l'attributo HEIGHT non lo interpreta?

grazie, ciao

luca

--------------------------------------------------------------------
<%@ Page language="c#" Codebehind="AutomationCTV.aspx.cs" AutoEventWireup="false" Inherits="NSO.Turni.AutomationCTV" %>
<%@ Register TagPrefix="busyboxdotnet" Namespace="BusyBoxDotNet" Assembly="BusyBoxDotNet" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<HTML>
<HEAD>
<title>AutomationCTV</title>
<?xml version="1.0" encoding="UTF-8" ?>
<meta name="GENERATOR" content="Microsoft Visual Studio .NET 7.1">
<meta name="CODE_LANGUAGE" content="C#">
<meta name="vs_defaultClientScript" content="JavaScript">
<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
<link href="../ie4.css" type="text/css" rel="stylesheet">
<link href="n-stili.css" type="text/css" rel="stylesheet">
</HEAD>
<body bgcolor="#7897c0">
<form id="Form1" method="post" runat="server">
<table ID="tbIntestazione" style="Z-INDEX: 101; LEFT: 0px; POSITION: absolute; TOP: 8px; height:98%;"
width="100%" border="1" cellspacing="1" cellpadding="1" align="center">
<tr style="max-height:5%">
<td align="center" valign="top">
<asp:label ID="Label2" runat="server" BorderColor="ActiveCaption" BorderWidth="2px" BorderStyle="Ridge"
width="95%" BackColor="#C00000" ForeColor="White" Font-Bold="True" Font-Size="Medium" Font-Names="Verdana">Generazione Libretto </asp:label>
</td>
</tr>
<tr style="height:5%">
<td align="center">
<asp:label ID="Label1" runat="server" BorderColor="ActiveCaption" BorderWidth="2px" BorderStyle="Ridge"
width="688px" BackColor="Navy" ForeColor="White" Font-Bold="True" Font-Size="X-Small" Font-Names="Verdana"
Height="16px" Visible="true"></asp:label>
</td>
</tr>
<tr style="height:5%">
<td align="center" valign="bottom"></td>
</tr>
<tr style="height:15%">
<td align="center"></td>
</tr>
<tr style="height:70%">
<td align="center" valign="middle">
<table ID="Table1" style="BORDER-RIGHT: activecaption 2px ridge; BORDER-TOP: activecaption 2px ridge; BORDER-LEFT: activecaption 2px ridge; BORDER-BOTTOM: activecaption 2px ridge"
width="40%" border="2" cellspacing="1" cellpadding="1" bgcolor="buttonface">
<tr style="height:40%">
<td style="BORDER-TOP-STYLE: none; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BORDER-BOTTOM-STYLE: none"
align="center" valign="middle">
<asp:dropdownlist ID="DropDownList1" runat="server" Width="441px" ForeColor="Navy" Font-Names="Verdana"
Height="24px" Visible="False"></asp:dropdownlist>
<busyboxdotnet:BusyBoxButton ID="Button1" runat="server" Font-Names="Verdana" Font-Bold="True" ForeColor="White"
BackColor="#CC0000" Width="260px" Text="Genera Libretto Turni" BorderStyle="Ridge" BorderWidth="2px" BorderColor="ActiveCaption"
Height="50px" Font-Size="12pt" BusyBoxToShow="BusyBox1"></busyboxdotnet:BusyBoxButton>
</td>
</tr>
</table>
<busyboxdotnet:BusyBox id="BusyBox1" title="Attendere prego" runat="server" Text="L'operazione richiesta richieder? alcuni secondi, siete pregati di attendere il suo completamento."
Image="GearsBig"></busyboxdotnet:BusyBox>
</td>
</tr>
</table>
</form>
</body>
</HTML>
----------------------------------------------------------------------
luca

simone_b Profilo | Newbie

Ciao, come ti ho già detto via email, per scrivere markup XHTML compliant devi seguire il suo standard. Per essere sicuro di stare scrivendo bene devi usare un editor che visualizzi gli errori, come VS2005 o Dreamweaver.

In realtà, per usare BusyBoxDotNet, non è strettamente necessario che la pagina sia XHTML compliant, è sufficiente che dichiare il DTD. Il problema sorge se questo causa errori di layout nella tua pagina (indice del fatto che il tuo markup non era XHTML compliant).

Non è necessario che la pagina sia valida nel complesso, basta che aggiusti le parti che, causa la dichiarazione del nuovo DTD, appaiono in modo strano, questo perchè il browser si aspetta di trovare markup conforme XHTML mentre il tuo non lo è.

E' sufficiente che aggiusti solo quelle parti. In linea più che generale devi spostare la maggior parte degli attributi degli elementi in dichiarazioni all'interno di fogli di stile, questo sarebbe già un buon passo, tipo:

Invece che

<table height="....">

Scrivi

<table style="height:...;">
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5