Skill kode og html

Dette er til alle dere utviklere der ute, pass på å ikke hardkode html i koden deres. Det gir bare problemer senere. Her er et eksempel.

Jeg har for en kort stund siden laget ferdig en liten rendering for å vise relaterte saker, men skulle idag gjøre en liten designendring på den. Da oppdager jeg at jeg har lagt inn bittegrann html i koden for at sakene skulle skrives ut én og én med linjeskift mellom. Dette er enkelt for en utvikler å endre på, men så skulle jeg sette inn en div med en css-klasse på. For å skrive " må en jo skrive \" i koden, noe en ikke kan forvente at designere vet om. Så jeg gjorde det eneste riktige, flyttet all html ut av koden, og brukte databind mot en asp:repeater (om du bruker repeater eller noe tilsvarende må en se ut fra behov).

I stedet for en asp:label som bare tok imot innhold fra koden, la jeg inn følgende asp:repeater:

<asp:Repeater ID="rptItems" runat="server">
    <ItemTemplate>
        <div class="oneline">
            <a href='<%# Eval("ItemUrl")%>'>- <%# Eval("Title")%></a></div>
    </ItemTemplate>
</asp:Repeater>

C# koden ble mye ryddigere, og nå kan designerne velge om det skal brukes div, eller legges inn i en liste etc. For deg som er interessert i hvordan kildekoden ser ut, så tar jeg med utdraget hvor jeg knytter data til asp:repeater:

rptItems.DataSource = tags; 
rptItems.DataBind();

Dette gjelder like mye for snippets og layouts som renderings. Jeg vet at jeg synder mot dette selv stadig vekk, siden det er så enkelt å bare legge inn litt html i koden, men jeg tilstreber å ikke gjøre dette.

 

- Audun