次の方法で共有


Ta kontroll över den HTML-kod ASP.NET genererar

I torsdags hade jag en intressant diskussion med en deltagare på lanseringsevenemanget i Göteborg. Vi samtalade om möjligheterna att exakt styra hur den HTML-kod som genereras av ASP.NET ser ut, t.ex. när du vill skapa en sajt som är tillgänglighetsanpassad.

I ASP.NET 3.5 har ListView-kontrollen lagts till som ger dig stor flexibilitet att styra den exakta utformningen på HTML-koden som genereras för databundna listor. Du har sedan tidigare även haft möjlighet att använda Repeater-kontrollen som innehåller funktionalitet för att styra renderingen av enklare typer av listningar, dock utan inbyggt stöd för editering och uppdatering av datakällor samt paginering, vilket alltså ListView tillfört.

Ett annat alternativ är att använda sig av det nya MVC (Model-View-Controller)-ramverk som är under utveckling. Det medger exakt kontroll över hur dina HTML-taggar kommer att genereras, med ett beteende som kanske mer påminner om klassisk ASP eller PHP vad gäller genereringen av gränssnittet - fast med en mycket snygg separation av gränssnitt, logik och din domänmodell (dina klasser som beskriver dina verksamhetsobjekt) - egentligen mer likt hur Ruby on Rails fungerar. Tycker du inte om den inbyggda 'ViewEngine' som finns i MVC-ramverket kan du enkelt byta den mot din egen eller någon av de som hitills portats genom Codeplex-projektet MvcContrib - t.ex. Brail View Engine.

En sak som du dock går miste om med MVC-ramverket är ASP.NET:s postback-funktionalitet och det ViewState som används för att få kontroller att komma ihåg vad som hänt mellan postningar genom att fejka ett "state" (fast här skulle vissa nog säga "slipper" istället för "går miste om" :-)  Det innebär hursomhelst att du inte kan använda kontroller som är beroende av postbacks i MVC-ramverket - det vill säga merparten av ASP.NET:s inbyggda kontroller. Det finns några hjälpklasser för sådana saker som att skapa länkar, skapa formulär och läsa formulärdata - och det lär förstås dyka upp serverkontroller när ramverket mognar.

Men vill du behålla den inbyggda funktionaliteten i ASP.NET:s befintliga kontroller och ändå få möjlighet att bestämma exakt hur dessa ska renderas så finns det faktiskt ett tredje alternativ. Genom att använda något som heter 'Control Adapters' kan du styra ASP.NET-kontrollernas rendering precis som du själlv vill. ASP.NET 2.0 CSS Friendly Control Adapters 1.0 är ett exempel på hur du kan använda 'Control Adapters' för detta. Tyvärr så finns VS-mallen bara tillgänglig för Visual Studio 2005 men källkoden är tillgänglig från Codeplex.