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: ,


  • Gombok kiszürkítése Firefoxban

    Balássy György (MS RD, ASP.NET MVP, MCTS) Azt hiszem jogosan várjuk el egy szoftver felhasználói felületétől, hogy ha egy gombot nem lehet megnyomni, akkor ez messziről ordítson róla. Sajnos ez a Firefoxban megjelenített weboldalakon nem mindig van így. Tovább »
  • SQL admin felvétele utólag

    Balássy György (MS RD, ASP.NET MVP, MCTS) Az SQL Server 2008 telepítője rákérdez, hogy mely felhasználóknak szeretnénk az adatbázis kiszolgálóban sysadmin jogokat adni. Ha a telepítés során ezen a képernyőn egy lezser Next-tel átsiklunk, akkor hiába fog elindulni a szolgáltatás, hiába lesz hozzá SQL Server Management Studionk, nem fogunk tudni kapcsolódni hozzá. Szerencsére van hátsó ajtó! 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