Jupp, .net framework är väl värt att ladda ned! :)
Trots att det är mer komplex så tycker jag ändå att det är betydligt enklare att arbeta med, exempelvis det här med att alla kontroller är "intelligenta" och kommer ihåg sina egna värden. Alltså att om jag ändrar texten i en textbox så kommer den ihåg den texten tills jag ändrar den igen.
När jag ändå håller på kan jag ju ge er lite fler anledningar:
* C# har en funktion som heter pageload. Här kan du lägga kod som exekveras så fort sidan laddas. Men det finurliga är en liten sats som ser ut så här:
if (!IsPostBack) {}
Här exekverar du kod som BARA körs första gången du går in på sidan. Om du däremot gör en postback (exempelvis trycker på en knapp och kör en funktion) så kommer koden i if-satsen inte att exekveras. Kan användas till mycket kul. :)
* Säg att du ska formatera ett telefonnummer. Skapa ett cs-dokument (c#-dokument) och bygg en funktion som ska returnera ett mobilnummer i rätt format oavsett hur besökarna skriver in det i en textbox. Det bara att anropa funktionen, slänga in strängen som ska omvandlas och returnera den. Återanvänd funktionen på alla dina sidor som behöver den, en rad kod är allt som krävs! Här har jag en liten exempelfunktion som fixar till ett mobilnummer så jag kan köra det mot en sms-tjänst, alltså om du skriver in +46 (0)707 - 450 00 00 som ditt telefonnummer så kommer den att göra om numret till 467075600000.
public static String MobileNumFix(String _MobileNum) {
string MobileNum = _MobileNum;
if (MobileNum.StartsWith("0")){
MobileNum=MobileNum.Remove(0,1);
MobileNum=MobileNum.Insert(0,"46");
}
MobileNum=MobileNum.Replace("+46","");
MobileNum=MobileNum.Replace("(0)","");
MobileNum=MobileNum.Replace(" ","");
MobileNum=MobileNum.Replace("-","");
if (!MobileNum.StartsWith("46"))
MobileNum=MobileNum.Insert(0,"46");
MobileNum=MobileNum.Trim();
return MobileNum;
}
Nu kan jag anropa den här funktionen från vilken sida som helst med EN rad kod!
string MobileNum = MinKlass.MobileNumFix(Phone.Text);
...där Phone.Text är en textbox (med id phone) där besökaren kan fylla i sitt telefonnummer hur de vill och det blir rätt ändå. :)
* Det finns mängder med parametrar som du kan sätta på dina kontroller (exempelvis en textbox, en datagrid, dropdownlist etc...).
<asp:ImageButton
id="MinKnapp" ImageUrl="minbild.jpg" BorderWidth="2px" onclick="MinFunktion"
runat="server"
/>
Här är en ImageButton. En submitknapp som är en bild. Om du vill byta ut dess bild mot en annan när du trycker på den gör du så här:
MinKnapp.ImageUrl = "EnAnnanBild.jpg";
Som ni ser så är det oerhört enkelt att sätta egenskaper på kontroller. OCH DE KOMMER IHÅG sina nya inställningar oavsett du gör nya postbacks till andra funktioner på sidan. :)
Eller varför inte göra knappen osynlig när du tryckt på den en gång?
MinKnapp.Visible = "false";
Svårare än så är det inte... det här kan du även använda på en tabell. Sätt ett id på en vanlig tabell och parametern runat="server" så kan du bolla med den också:
<TABLE id="MinTabell" Runat="server">
</TABLE>
I funktionen:
MinTabell.Visible = "false";
Hela tabellen döljs och allt som finns i den...
Att uforma exempelvis en gästbok eller en nyhetssida är nästan FÖR enkelt. Det finns något som heter datalist. Det är en kontroll som listar exempelvis en tabell i en databas. Du har total kontroll över dess utseende med sk Templates! Det finns ett par olika templates:
<ItemTemplate>
... all kod för varje rad i en tabell, upprepas för varje rad.
</ItemTemplate>
<AlternatingItemTemplate>
Valfri. Om du vill att exempelvis varannan rad ska ha en annan bakgrundsfärg kan du använda denna. Nu kommer Itemtemplate och AlternatingItemtemplate att köras varannan gång... :)
</AlternatingItemTemplate>
<SeparatorTemplate> - kod mellan varje rad.
<SelectedItemTemplate> - om du exempelvis gör en funktion där du kan markera en rad och vill skapa en egen design för en vald kolumn med egna funktioner.
EditItemTemplate - om du ska editera en viss rad.
HeaderTemplate - det som visas högst upp, exempelvis rubriker på kolumnerna!
FooterTemplate - det som visas längst ned.
Om du använder detta för att lista exempelvis en gästbok så har du total kontroll över layouten och funktionaliteten. Du kan självklart använda både vanlig html och asp.net i dessa templates! Hur listar man då en tabell? Jo, det är MYCKET enkelt och smidigt:
<asp:DataList id="DataList1" runat="server"
>
<HeaderTemplate>
Rubriken
</HeaderTemplate>
<ItemTemplate>
<%# DataBinder.Eval (Container.DataItem, "MinData") %>
</ItemTemplate>
</asp:DataList>
Här kör vi en datalist-control. I den så har vi definierat en Headertemplate (som kommer att hamna högst upp) och en Itemtemplate där jag hämtar "MinData" från en tabell i en databas. Asp.net kommer nu att automatiskt generera en tabell och fylla den med den data jag har hämtat.
Om jag vill att varannan rad ska ha en mörkare bakgrundsfärg så behöver jag bara lägga till:
<AlternatingItemTemplate>
<%# DataBinder.Eval (Container.DataItem, "MinData") %>
</AlternatingItemTemplate>
Naturligtvis kan jag även ha html i mina templates:
<ItemTemplate>
<span style="text">Min data:
<%# DataBinder.Eval (Container.DataItem, "MinData") %>
</span>
</ItemTemplate>
Jag kan ven påverka tabellens utformning utan att behöva skapa en egen htmltabell. Allt jag behöver göra är att skicka in lite fler parametrar i min datalist:
<asp:DataList id="DataList1" runat="server"
BorderColor="black"
CellPadding="3"
Font-Name="Verdana"
Font-Size="8pt"
HeaderStyle-BackColor="#aaaadd"
AlternatingItemStyle-BackColor="Blue"
>
Som ni ser så har jag en alternatingItemStyle här också. Jag behöver alltså inte ens en extra template för att fixa en annan bakgrundsfärg. :)
För att man ska få se min fina tabell så måste man godkänna ett avtal (bestämmer jag) :) därför så skapar jag en:
<asp:CheckBox id=Check1 AutoPostBack="True" OnChecked="MinFunktion" runat="server"/>
Här finns det lite kuligheter. Som ni ser har jag AutoPostBack="true" i den här checkboxen... det betyder att jag postar tillbaka till servern i samma stund som jag markerar den. Ni hittar även OnChecked="MinFunktion" - det betyder att jag startar "MinFunktion" när jag trycker på knappen en gång. Inga sumbmitbuttons här alltså. :)
I MinFunktion kör jag:
MinDatalist.Visible = "true";
Jag kör visible="false" i min Pageload:
PageLoad {
if (!IsPostBack)
MinDatalist.Visible = "false";
}
Nu ser jag inte tabellen förrän jag kryssat i min checkbox. :) Observera att jag måste lägga koden bakom en if (!IsPostBack) för annars kommer den att sätta MinDatalista.Visible="false" varje gång sidan laddas om... nu körs den koden bara första gången när jag kommer in på sidan så när jag väl kryssat i checkboxen så kommer datalisten att vara synlig efter det oavsett hur många postbacks jag gör på sidan.
En annan liten test man kan göra är:
if (MinCheckbox.Checked == "true") {
MinDatalista.Visible = "true";
}
else {
MinDatalista.Visible = "false";
}
Här kan man kolla att den hela tiden är i kryssad, för är den inte det så kör jag else-koden. Lägg den i PageLoad så förstår ni säker hur det fungerar. :)
* Att validera en kontroll är oerhört enkelt! Glöm allt krångel i gamla asp. Du har ett par olika valideringskontroller:
RequiredFieldValidator (kollar så du skriver nåt i exempelvis en textbox), CompareValidator (jämför värdet mellan två kontroller), RangeValidator, RegularExpressionValidator, CustomValidator och ValidationSummary.
Det är riktigt smidigt att få dem att fungera. Kolla här:
Jag gör en textbox:
<asp:textbox id="MinTextbox" runat="server">
På denna kan jag skapa exempelvis en RequiredFieldValidator.
<asp:RequiredFieldValidator id="MinValidator" runat="server"
ControlToValidate="MinTextbox"
ErrorMessage="Textboxen kan inte vara tom!"
Display="Static"
/>
Här anger jag helt enkelt vilken kontroll som ska valideras, i mitt fall "MinTextbox". Om jag försöker posta något utan att skriva något i textboxen så kommer min validator att skriva ut ett meddelande. Observera att detta körs på KLIENTEN, den genererar alltså ett javascript/dhtml till din webbrowser så du postar inte ens tillbaka något till servern innan vilkoren för validatorn är uppfyllda. :D
Men det blir bättre. Om du har en gammal webbläsare som inte klarar java/dhtml så vet asp.net om det och DÅ körs denna kod på servern i alla fall. Med andra ord, detta funkar om du så surfar in med netscape 2.0...
Alla valideringskontroller är i princip lika enkla att förstå. Till och med en regularexpression som normalt är ganska krånglig blir en barnlek:
<asp:RegularExpressionValidator id="RegularExpressionValidator1" runat="server"
ControlToValidate="MinTextbox"
ValidationExpression="^\d{5}$"
Display="Static"
Font-Name="verdana"
Font-Size="10pt">
Postnumret måste innehålla fem siffror.
</asp:RegularExpressionValidator>
Här kollar vi att du fyller i 5 siffror i textboxen, annars skriver vi ut felmeddelandet "Postnumret måste innehålla fem siffror". Mer kod än så behövs inte!
Sådär, nu vet ni ännu mer om asp.net och hur smart det är.
[Redigerat av NETwork den 12 dec 2001]