Hány kötelező attribútuma van egy ASP.NET vezérlőnek?

A Visual Studio szerint kettő. Szerintem egy.

Ha néhány héttel ezelőtt megnézte valaki az MSDN Kompetencia Központ honlapján a cimkefelhő HTML kódját, valami ilyesmit láthatott volna:

    <div class="tagContent">
            <span id="ctl00_cphMain_TagCloud1_dtlTagCloud">
                    <span>
                            <a id="ctl00_cphMain_TagCloud1_dtlTagCloud_ctl00_hypTag" 
                               class="Tag1" rel="tag" href="Tags/.NET">.NET</a>
                    </span>
                    <span>&middot;</span>
                    <span>
                            <a id="ctl00_cphMain_TagCloud1_dtlTagCloud_ctl02_hypTag" 
                               class="Tag3" rel="tag" href="Tags/Active%20Directory">Active Directory</a>
                    </span>
                    <span>&middot;</span>
                    <span>
                            <a id="ctl00_cphMain_TagCloud1_dtlTagCloud_ctl04_hypTag" 
                               class="Tag3" rel="tag" href="Tags/ASP.NET">ASP.NET</a>
                    </span>
                    <span>&middot;</span>
    <!-- stb. -->

Ez bizony némi javításért kiált! Sok benne a felesleges span és sok benne a felesleges id.

A spanektől egyszerű volt megszabadulni: a listát korábban egy DataList vezérlő állította elő adatkötéssel, ez viszont köztudottan telespaneteli a kimenetet. Átírtuk ListViewra és tada, megszűnt ez a probléma.

A másik érdekesség a gusztustalanul sok és hosszú ID. Ezektől sem nehéz megválni: ne adjunk a szerver oldali vezérlőnek ID attribútumot! Nem kell neki! Gondoljuk csak végig, hogy miért van az ID? Hogy azonosítani tudjuk a vezérlőt, amikor code behindból hivatkozunk rá. Ha nincs code behind, nem kell az ID!

Kérdés persze, hogy okoz-e az ASP.NET-nek gondot, ha nincs ID? Ehhez csak meg kell keresnünk Reflectorban a System.Web.UI.WebControls.WebControl osztály AddAttributesToRender metódusát, ez felelős ugyanis ennek az attribútumnak a HTML markupba generálásáért:

    protected virtual void AddAttributesToRender( HtmlTextWriter writer )
    {
        if( this.ID != null )
        {
            writer.AddAttribute( HtmlTextWriterAttribute.Id, this.ClientID );
        }

        //...
    }
Látható, hogy nem repül kivétel, ha a this.ID null, csak éppen nem történik semmi.

Amikor Visual Studioban behúzok egy vezérlőt a Toolboxról, a nagyokos azt hiszi, hogy majd biztosan programozni szeretném, ezért ad neki rögtön ID és runat=”server” attribútumokat. Ebből egyedül a runat=”server” kell, az ID nem! Sajnos a webfejlesztő dolga, felelőssége, kötelessége, hogy a felesleget törölje a markupból.

Az ID törlése után ez maradt a cimkefelhőnkből:

    <div class="tagContent">
        <a class="Tag1" rel="tag" href="Tags/.NET">.NET</a> 
        &middot; 
        <a class="Tag3" rel="tag" href="Tags/Active%20Directory">Active Directory</a> 
        &middot; 
        <a class="Tag3" rel="tag" href="Tags/ASP.NET">ASP.NET</a>
        &middot;
    <!-- stb. -->    

Miután töröltük a felesleges HTML tageket és attribútumokat, a cimkefelhő HTML markupja a harmadára csökkent.

Szerintetek érdemes erre figyelni, fontos ez?



Balássy György (MS RD, ASP.NET MVP, MCTS)

Balássy György (MS RD, ASP.NET MVP, MCTS) Villamosmérnök, a BME Automatizálási és Alkalmazott Informatikai Tanszékén webportálok fejlesztését oktatja. 2000 óta foglalkozik a Microsoft .NET platformjával, melynek meghonosításában jelentős szerepet vállalt előadóként, konzulensként és A .NET Framework és programozása című könyv társszerzőjeként. Az MSDN Kompetencia Központon belül a Portál Technológiák Csoport vezetője, szakterülete web alapú rendszerek fejlesztése és üzemeltetése. 2004-ben Magyarországon elsőként kapta meg a Most Valuable Professional címet, majd 2005 óta a Microsoft magyarországi regionális igazgatója. Publikációi a Technet Magazinban, az MSDN Kompetencia Központ honlapján és szakmai blogjában olvashatóak.

2009.01.05. 14:27:40 | Permalink | Hozzászólások: 0 | Tárgyszavak: ,


  • IIS7 UrlRewrite és ASP.NET postback

    Balássy György (MS RD, ASP.NET MVP, MCTS) Az IIS 7-hez kiadott UrlRewrite modul számos előnnyel rendelkezik: az alkalmazástól független, XML-ben konfigurálható, regex alapú, van hozzá GUI, nem csak rewrite-ot, hanem redirectet is tud és még sorolhatnám. Mivel a webkiszolgálóba épül be, tetszőleges platformon íródott alkalmazással használható, így kiválóan működik ASP.NET-tel is. Mindössze csak a postback-kel van gond. Tovább »
  • Windows Live Messenger error 81000451

    Balássy György (MS RD, ASP.NET MVP, MCTS) A kíváncsiság néha erősebb a józan észnél, ezért időnként hajlamos vagyok az éles gépemre béta szoftvereket telepíteni. Bár nem vagyok chatfüggő, feltettem az új Live Writer mellé a Live Messengert is, aminek meg is lett az eredménye, be sem tudok jelentkezni. Tovább »


Írja meg Ön is véleményét!


Hozzászólásokat csak regisztrált, bejelentkezett felhasználóktól tudunk elfogadni!

Hozzászólások