Re: Vad krävs för att migrera
> Är det ett stort jobb att migrera från ASP (vb-script) till C#??
Ja - och nej! Ja, därför att: asp.net har inte något alls gemensamt med gamla asp, mer än namnet då. Det är en helt ny teknik och ett helt nytt tänk att arbeta med asp.net/c#. Nej, därför att: Det är en tröskel att komma igång, men när de första frågetecknen rätats ut kommer du snabbt att se vilket otroligt lyft det är att gå från chimpanskodning a la asp till .net. Sedan kommer nästa tröskel, när du förstår hur stort .net är och att du inte kommer att kunna lära dig allt... någonsin. :)
> Kan man blanda HTML och C#, precis som man kan blanda Vb-script och HTML?? Jag vet att man skall försöka undvika detta i största möjliga mån, men ni vet ju hur det brukar bli!! :-)
Ja - och NEJ! Ja, du KAN. Nej, det finns inte en enda anledning att göra det, aldrig någonsin! Du använder asp.net-kontroller i ditt layoutlager, aldrig kod.
> Jag håller med om att det inte är så lyckat med context-switchar, men om nu .Net genererar HTML-koden, hur kan man då behålla kontrollen över det som skickas till klienten??
Jag tror att det här kräver en liten grundläggande förklaring. Du har tre huvudkomponenter när du utvecklar webbapplikationer på .net-plattformen (nåja, det finns fler men strunt samma): asp.net, ett programmeringsspråk (vanligtvis c# eller vb.net) samt html (och dess avarter).
-
Precis som tidigare så vill din läsare bli matad med html, xhtml, javascript, dhtml, stilmallar och allt vad det heter. När du börjar utveckla på .net har du precis som tidigare en webbsida som kan innehålla allt detta. Du kan alltså bygga upp din sida med gamla tabeller och skit, eller om du vill vara lite mer sofistikerad använda css, lager, xhtml och sådant som w3c tycker att vi ska använda numera. Du kan även bygga upp exakt samma sida endast med asp.net-kontroller men det är en annan sak.
-
Layouten kommer dock att få samsas med något som kallas asp.net-kontroller. En asp.net-kontroll är helt enkelt en programmerbar "enhet" som exekveras på servern och kastar tillbaka kod (vanligtvis html, javascript, dhtml) som kan tolkas av din webbläsare. Det finns en mängd olika asp.net-kontroller, valideringskontroller, kontroller för listning av data osv. Varje kontroll har sina unika egenskaper. Du kan även programmera egna kontroller. Du kan som sagt bygga upp hela webbsidor endast med asp-kontrtoller, men oftast använder du dessa endast för element som behöver styras dynamiskt.
Exempel på en vanlig asp.net-kontroll:
<asp:TextBox runat="server">
Vad gör då denna? Jo, en textbox är en asp.net-kontroll som kastar tillbaka en vanlig <input type="text"> ELLER en textarea beroende på hur du bygger upp den. I kontrollen ser du ett attribut, Runat="server". Detta attribut skriver du alltid i dina asp.net-kontroller vilket talar om för kontrollen att den ska exekveras på servern.
- asp.net är dock inte något programmeringsspråk. Du kan egentligen inte göra något alls med dina kontroller utan att programmera mot dessa och det är då vi kommer in på den verkliga utmaningen - att (om du inte redan kan) lära sig ett fullfjädrat objektorienterat programmeringsspråk. Det tar lång tid att bli en bra programmerare (jag är själv på grunt vatten och plaskar). Därmed inte sagt att du behöver vara en naturbegåvning i c++ för att dra nytta av plattformen, allt beror naturligtvis på vad du har tänkt göra (en gästbok eller ett operativsystem?).
Jo, för att komma till saken (jag svävar alltid iväg) så kan vi gå tillbaka till vår textbox. I sin enklaste form skriver du din programkod i samma dokument som du har din layout, dock blandar du aldrig kod och html/asp.net. Programkoden har du förslagsvis högst upp i ditt dokument. Jag rekommenderar dock att försöka använda codebehind vilket enkelt förklarat innebär att du skriver din kod i helt separata filer vilka sedan kompileras till assemblys (dll-filer) men du kan glömma det så länge.
I koden kan du styra din textbox precis så som du vill. FÖr att kunna identifiera den behöver den ett id. Jag kan även sätta andra egenskaper, en textbox kan se ut så här:
<asp:TextBox id="myTextBox" Text="hejhej" Width="200px" BorderWidth="2px" BorderColor="Blue" runat="server">
Nu kan jag även ta kontroll över min textbox från koden och styra den dynamiskt, exempelvis:
myTextBox.Text = "Ny Text";
Vill jag av någon anledning dölja min textbox dynamiskt behöver jag bara göra den osynlig:
myTextBox.Visible = false;
Voila, kontrollen döljs, MEN den finns kvar där och alla egenskaper är intakta om du senare väljer att visa den igen!!! Till och med texten "Ny Text" finns kvar oavsett hur många gånger sidan postas tillbaka till severn utan att du behöver göra något. Varje gång sidan anropas exekveras kontrollen och tillbaka tillbaka kod som din webbläsare kan tolka.
Detta är kanske ett tråkigt och löjligt exempel, men det finns verkligt sofistikerade kontroller som behandlar stora datamängder, valideringskontroller och mycket annat på ett otroligt smidigt sätt. För att inte tala om de möjligheter som ett riktigt objektorienterat programmeringsspråk ger dig som utvecklare.
Så,frågan är, vill du också halvera utvecklingstiden, öka på snabbheten, säkerheten och möjligheterna i dina webbapplikationer? Antagligen. Välkommen till en ny värld. :)