En enkel interaktiv vevside
aspx fila blir slik:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server"> <title>Untitled Page</title> </head> <body> <h1>Beregn pris</h1> <form id="form1" runat="server"> <div> <div> Antall: <asp:TextBox ID="Antall" runat="server" Width="39px"> </asp:TextBox> Stykkpris: <asp:TextBox ID="Stykkpris" runat="server" Width="37px"> </asp:TextBox> </div> <div> <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Beregn" Width="80px" /> <asp:TextBox ID="Resultat" runat="server" Width="77px"> </asp:TextBox> <asp:Label ID="Label_error" runat="server" ForeColor="Red"> </asp:Label> </div> </div> </form> </body> </html>
cs fila blir slik:
using System; using System.Data; using System.Configuration; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls; public partial class _Default : System.Web.UI.Page { protected void Button1_Click(object sender, EventArgs e) { try { int count = Convert.ToInt32(Antall.Text); int prize = Convert.ToInt32(Stykkpris.Text); Resultat.Text = (count * prize).ToString(); Label_error.Text = ""; } catch (Exception ex) { Label_error.Text = "ugyldig input"; Resultat.Text = "?"; } } }
"round-trip"
Denne løsningen representerer det som ofte kalles en typisk "round-trip". Vi fyller ut data på en form på siden (antall og stykkpris), sender dataene til serveren som gjør beregninger, oppdaterer siden (resultat) og sender den tilbake. Vi ser av CS-koden at vi kan identifisere komponentene på siden (i formen) direkte som objekter.
I denne typiske sekvensen sender vi samme side tilbake med oppdatert innhold. Vi kan selvsagtt gjøre andre ting enn det, vi kan sende tilbake en annen side, eller vi kan sende tilbake andre deler av samme side, eller vi kan sende tilbake fragmenter av en side.
Videre ser vi av koden at jobben på tjeneren kun bruker data som ligger på feltene på siden. Siden vi har tilgang til et så kraftig språk som C# på tjeneren er det lett for oss å bruke de allminnelige bibliotekene i C# til å programmere hva vi vil på tjeneren, databaseoppslag, bruk av Webservices, XML-parsing osv.
Merk at dårlig formatert input plukkes opp på tjeneren som unntakshandtering i en konvertering. Fristenede og enkelt, men det er gode argumenter for at denne typen inputkontroll burde foregå på klienten, før dataene (formen) sendes. I så fall er verktøyet Javascript. Visual Studio støtter oss også i noe slik inputkontroll ved å generere Javascript for en del situasjoner.