Generare markup standard con ASP.NET 4.0

di Daniele Bochicchio, in ASP.NET 4.0,

Per default, ASP.NET non genera codice in formato XHTML Strict, ma Transitional. Se si evitano alcuni controlli, però, si può arrivare ad ottenere markup XHTML 1.1, sfruttando la modalità 1.0 Strict, che assomiglia molto ad XHTML 1.1.
A partire da ASP.NET 4.0 è possibile utilizzare un meccanismo di opt-out (cioè facoltativo) che, attraverso il web.config, consente di far genere un output migliore ai controlli:

<system.web>
  <pages controlRenderingCompatibilityVersion="4.0"/>
</system.web>

Contrariamente a quanto avviene con le versioni precedenti, questa configurazione fa produrre codice standard a tutti i controlli, definendo in modo particolare questo comportamento:

  • viene generato markup XHTML 1.0 strict e la sezione xhtmlConformance del web.config viene ignorata;
  • l'attributo enabled viene renderizzato solo nel caso il controllo lo supporti, ad esempio nel caso di
    <input />
    Se il controllo, come Label, non lo supporta, l'attributo nel corrispettivo tag HTML viene ignorato, in favore di uno stile CSS.
  • il tag
    <div />
    creato da ASP.NET intorno ai campi nascosti riceve uno stile, come questo:
    <div class="aspNetHidden">...</div>
    Ciò rende possibile la definizione di uno stile ad hoc;
  • tutti i controlli che ereditano da Table o Image non generano più l'attributo border;
  • i validator control non generano stile inline e, quindi, diventa possibile scegliere un colore attraverso i CSS, anziché avere specificato il rosso.

Molti controlli, come TreeView o Menu, beneficiano inoltre di un completo rinnovamento in termini di markup generato, emettendo un codice che viene supportato meglio da tutti i browser.

Tutti i controlli che emettevano tabelle, come CheckBoxList, Wizard, CreateUserWizard, Login o FormView, sono ora dotati di una nuova proprietà, chiamata RenderOuterTable, che di default è impostata su true. Impostandola su false, i controlli non emettono più una tabella per racchiudere il proprio template:

<asp:FormView runat="server" id="CustomerView" RenderOuterTable="false">
...
</asp:FormView>

Commenti

Visualizza/aggiungi commenti

| Condividi su: Twitter, Facebook, LinkedIn

Per inserire un commento, devi avere un account.

Fai il login e torna a questa pagina, oppure registrati alla nostra community.

Approfondimenti

I più letti di oggi