Jag har gått över från ASP till ASP.NET, och en av anledningarna var att UserControls är bätte än att använda inkludfiler. Tidigare hade jag en ASP-sida där jag hade en inkludfil innehållande alla funktioner som användes på sidan. Detta medförde att all kod i den inkludfilen blev tungen att kompileras även om bara en funktion skulle användas på just den sidan. Hur kan UserControls göra mitt liv enklare med detta problem? (övriga funktioner med UC förstår jag) Nu har du missförstått uc helt ;) Nu håller jag inte med. Kompilera en UC till en egen .dll gör du om den UC:n skall återanvändas i andra projekt men det är inget måste. Du kan lika gärna skapa din UC i samma projekt du jobbar på och den hamnar då i samma dll och inga referenser behövs. Hm... Det är om man alltid gör just usercontrols. jag tolkade det som att det var funktioner som användes överallt, även i vanliga aspx-filer Om det är funktioner som används överallt bör de läggas i klasser istället. Visst, jag kunde gjort så med inkludfiler. Lagt varje funktion i en egen inkludfil, men det hade inte varit speciellt smidigt. Det här med att anropa en DLL låter som en smidigare lösning. Fungerar det på samma sätt som ASP och COM+ ? Meningen (som jag hade tänkt mig) var att den här filen med alla funktioner bara skulle behöva kompileras en gång, och sedan kunde den användas på alla sidor utan att man behöver kompilera om den, alternativt att varje funktion kompileras när just den ska användas. En sak som jag tycker är viktigt är att lära sig vilka möjligheter som finns i .NET. I det här fallet så tycker jag att det handlar om två olika saker. Okej, tack för informationen. Jag ska skaffa lite böcker att fördjupa mig i, men det verkar vara klasser som blir räddningen här. Antar att det är VS.NET du kör i, och att det är där du har smidiga sätt att återanvända klasser och sånt.Varför skulle UserControls vara bättre?
Sv: Varför skulle UserControls vara bättre?
uc har inget med det att göra...
Det du ska göra är att skriva en separat fil/flera filer som du kompilerar till en dll. sedan lägger du till en referens till den dll:en och anropar du funktionerna i den/de klasser du skapat däriSv: Varför skulle UserControls vara bättre?
En UC ersätter vad i ASP gjordes med includefiler.
Om jag förstår första inlägget rätt så innehåller den nämnda includefilen samtliga funktioner som används på hela nätplatsen.
Det du gör i en UC är att du bara lägger in de funktioner som den UC:n behöver använda. Det kunde du gjort med din includefil också, en includefil för varje typ av funktionsset. Om en sida behöver flera olika funktioner så inkluderar man flera filer.
Så egentligen så gör en UC inte detta "problem bättre". Vad som däremot gör allting enklare är att .NET är ett OOP språk och du därför kan skapa basklasser och vanliga klasser som du kan använda i dina projekt.Sv: Varför skulle UserControls vara bättre?
Sv: Varför skulle UserControls vara bättre?
Min åsikt är i alla fall att UserControls används på samma sätt som includefiler.Sv: Varför skulle UserControls vara bättre?
Kan ni ge exempel på hur ni använder UCs?Sv: Varför skulle UserControls vara bättre?
T.ex. din includefil i ASP med alla de funktioner som nätplatsen använder skulle jag göra till en egen klass, eller flera klasser. Dessa gör du i ett eget klassprojekt och det kompileras då till en egen .dll som du kan använda som referens i andra projekt.
T.ex.
<code>
Public Class FunctionBaseClass
Public Shared Function enFunktion(myString As String) As String
Return myString.Substring(0,1)
End Function
Public Shared Function enFunktionTill() As Integer
End Function
End Class
</code>
I ditt projekt kör du sedan
<code>
Imports FunctionBaseClass
lblEnLabel.Text = enFunktion("hejhopp")
' lblEnLabel.Text får då "h"
</code>
När vi sedan kommer till UserControls så kan jag ta några exempel jag har.
- Email TextBox Kontroll
Denna kontroll använder jag när jag har ett formulär som skall ha en TextBox för e-postadress. Kontrollen innehåller en TextBox, en RequiredValidator och en CustomValidator. code-behind till kontrollen innehåller dels properties så man kan välja om validatorerna ska användas samt en funktion som kontrollerar om e-postadressen är korrekt.
- Menykontroll
Kontrollen genererar design och funktionalitet för menyn. I varje .aspx sida som menyn skall finnas på inkluderar jag då Menykontrollen.
- Nyhetslista
I vissa sajter har jag nyhetslistor och arkiv. Denna kontroll läggs då in och har inbyggd funktionalitet för att anropa databasen (genom klasser i Business Layer) och få listor med nyheter. Kontrollen generar en Repeater med nyheterna.
I ovanstående fall så är klasserna byggda av en .ascx och en .ascx.vb fil, men man kan även bygga Serverkontroller där allt sker i en .vb (eller .cs) fil. Dessa kan man sedan använda direkt i Visual Studio verktygslådan. Det är även lättare att återanvända kontrollerna i andra projekt. Det är i dessa fall man får en .dll för varje kontroll, eller så har man ett kontrollprojekt som innehåller alla kontroller.
Jag rekommenderar att du först kollar de teoretiska grunderna i Objektorienterad programmering. Det är där lösningen till ditt includeproblem ligger.Sv: Varför skulle UserControls vara bättre?
Tack än en gång.