Handlekurver er svært viktige og kan mange ganger være den mest skremmende delen av å bygge et e-handelsnettsted. Denne opplæringen vil vise hvor lett det kan være å implementere en handlekurv ved hjelp av ASP.NET. I tillegg vil flere grunnleggende forklaringer bli gitt for å hjelpe begynnelsen av ASP.NET-programmører å forstå dette fantastiske rammeverket.
Siden ASP.NET ikke har blitt dekket for mye på NETTUTS, syntes jeg det ville være bra å ta en kort oversikt over noen av de tingene som skiller det fra andre språk.
Hvis du er ny på ASP.NET (og du har Windows), kan du prøve det gratis. Du kan laste ned Visual Studio Express ved å besøke ASP.NET nettsiden. Når du oppretter et nettsted lokalt på din maskin, kan du også kjøre nettstedet når som helst, og Visual Studio vil raskt starte en server på datamaskinen din og trekke opp nettstedet ditt i standard nettleser.
Vi trenger et sted å lagre varene i handlekurven, samt funksjoner for å manipulere varene. Vi lager en ShoppingCart-klasse for dette. Denne klassen vil også håndtere økt lagring.
Først må vi opprette App_Code-mappen. For å gjøre dette, gå til "Nettsted" -menyen, deretter "Legg til ASP.NET-mappe", og velg "App_Code." Det er her vi skal sette alle våre tilpassede klasser. Disse klassene vil automatisk være tilgjengelige fra koden på noen av våre sider (vi trenger ikke å referere til det ved å bruke noe som ligner på "inkludere" eller noe). Da kan vi legge til en klasse i den mappen ved å høyreklikke på mappen og velge "Legg til nytt element."
Raskt tips: Regioner i ASP.NET er veldig hyggelige å organisere og gruppere sammen. Den fineste tingen om dem er at du kan åpne og lukke regioner for å minimere mengden kode du ser på eller raskt finne deg rundt en fil.
bruker System.Collections.Generic; bruker System.Web; / ** * ShoppingCart-klassen * * Holder elementene som er i handlekurven og gir metoder for deres manipulering * / offentlig klasse ShoppingCart #region Egenskaper offentlig listeElementer get; privat sett; #endregion #region Singleton Implementation // Readonly egenskaper kan bare settes i initialisering eller i en konstruktør offentlig statisk, lettvint ShoppingCart Instance; // Den statiske konstruktøren kalles så snart klassen er lastet inn i minnet statisk ShoppingCart () // Hvis vognen ikke er i sesjonen, opprett en og sett den der // Ellers hent det fra økten hvis (HttpContext .Current.Session ["ASPNETShoppingCart"] == null) Instance = new ShoppingCart (); Instance.Items = ny liste (); HttpContext.Current.Session ["ASPNETShoppingCart"] = Instance; else Instance = (ShoppingCart) HttpContext.Current.Session ["ASPNETShoppingCart"]; // En beskyttet konstruktør sikrer at en gjenstand ikke kan opprettes fra utenfor beskyttet ShoppingCart () #endregion #region Item Modification Methods / ** * AddItem () - Legger til et element til shopping * / public void AddItem (int productId) // Opprett et nytt element for å legge til i handlekurven CartItem newItem = nytt CartItem (productId); // Hvis dette elementet allerede finnes i vår liste over varer, øk mengden // Ellers legger du til det nye elementet i listen hvis (Items.Contains (newItem)) foreach (CartItem-element i elementer) hvis (item.Equals (newItem)) item.Quantity ++; komme tilbake; else newItem.Quantity = 1; Items.Add (newItem); / ** * SetItemQuantity () - Endrer mengden av et element i handlekurven * / offentlig tomgang SetItemQuantity (int produktId, int mengde) // Hvis vi setter mengden til 0, fjern elementet helt hvis == 0) RemoveItem (productId); komme tilbake; // Finn varen og oppdatere mengden CartItem updatedItem = new CartItem (productId); foreach (CartItem element i elementer) if (item.Equals (updatedItem)) item.Quantity = quantity; komme tilbake; / ** * RemoveItem () - Fjerner et element fra handlekurven * / public void RemoveItem (int productId) CartItem removedItem = new CartItem (productId); Items.Remove (removedItem); #endregion #region Rapporteringsmetoder / ** * GetSubTotal () - returnerer totalprisen på alle elementene * før skatt, frakt, etc. * / offentlig desimal GetSubTotal () decimal subTotal = 0; foreach (CartItem element i elementer) subTotal + = item.TotalPrice; returnere subTotal; #endregion
Med et sted å lagre varekurvene våre, må vi kunne lagre informasjon om hvert enkelt produkt. Vi lager en CartItem-klasse som vil gjøre dette. Vi lager også en enkel produktklasse som vil simulere en måte å få tak i data om produktene vi selger.
CartItem-klassen:
bruker system; / ** * CartItem Class * * I utgangspunktet en struktur for å holde elementdata * / offentlig klasse CartItem: IEquatable#region Properties // Et sted å lagre mengden i handlekurven // Denne egenskapen har en implisitt getter og setter. offentlig int Antall get; sett; privat int _productId; offentlig int ProductId get return _productId; sett // For å sikre at Prod-objektet blir re-created _product = null; _productId = value; privat produkt _product = null; Offentlig produktprodusent get // Lazy initialization - objektet vil ikke bli opprettet før det trengs hvis (_product == null) _product = nytt produkt (ProductId); returnér produkt; offentlig streng Beskrivelse get return Prod.Description; offentlige desimal UnitPrice get return Prod.Price; offentlig desimal TotalPrice get return UnitPrice * Quantity; #endregion // CartItem-konstruktøren trenger bare et produktDet offentlige CartItem (int productId) this.ProductId = productId; / ** * Equals () - Trengs for å implementere IEquatable-grensesnittet * Tester hvorvidt dette elementet er lik parameteren * Denne metoden kalles av Inneholder () -metoden i listeklassen * Vi brukte denne innholdermetoden () i ShoppingCart AddItem () metoden * / public bool Equals (CartItem element) return item.ProductId == this.ProductId;
Produktklassen:
/ ** * Produktklassen * * Dette er bare for å simulere noen måte å få tilgang til data om våre produkter * / offentlig klasse Produkt public int Id get; sett; offentlige desimalpris get; sett; offentlig streng Beskrivelse get; sett; offentlig produkt (int id) this.Id = id; bytt (id) tilfelle 1: this.Price = 19.95m; this.Description = "Sko"; gå i stykker; tilfelle 2: this.Price = 9,95m; this.Description = "Shirt"; gå i stykker; sak 3: this.Price = 14.95m; this.Description = "Bukser"; gå i stykker;
Definisjon: En "egenskap" i ASP.NET er en variabel i en klasse som har en setter, en getter eller begge deler. Dette ligner på andre språk, men i ASP.NET refererer ordet eiendom spesifikt til dette. Et eksempel på dette er ProductId-egenskapen i CartItem-klassen. Det er ikke bare en variabel i en klasse med en metode for å få eller sette den. Det er erklært på en spesiell måte med og sett blokker.
Etter å ha hodet i koden så lenge er det på tide å gjøre noe visuelt. Denne siden vil bare være en måte å legge til varer i handlekurven. Alt vi trenger er noen få ting med "Legg til i handlekurven" -koblinger. La oss sette denne koden på Default.aspx-siden.
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>Min butikk
Som du kan se, er det eneste som skjer her at vi har noen LinkButtons som har OnClick-hendelsesbehandlere tilknyttet dem.
På koden baksiden har vi 4 arrangementshåndterere. Vi har en for hver LinkButton som bare legger til et element i handlekurven og omdirigerer brukeren til å se sin handlevogn. Vi har også en Page_Load-hendelseshåndterer som er opprettet av IDE som standard som vi ikke trenger å bruke.
bruker system; offentlig delklass _Default: System.Web.UI.Page protected void Page_Load (objekt sender, EventArgs e) beskyttet void btnAddShoes_Click (objekt sender, EventArgs e) // Legg til produkt 1 i handlekurven ShoppingCart.Instance.AddItem (1); // Rediger brukeren for å se sin handlekurv Response.Redirect ("ViewCart.aspx"); beskyttet tomt btnAddShirt_Click (objekt sender, EventArgs e) ShoppingCart.Instance.AddItem (2); Response.Redirect ( "ViewCart.aspx"); beskyttet tomt btnAddPants_Click (objekt sender, EventArgs e) ShoppingCart.Instance.AddItem (3); Response.Redirect ( "ViewCart.aspx");
Til slutt, hva har vi forberedt på hele tiden - handlekurven! La oss bare se på ViewCart.aspx først, og jeg vil forklare det etter det.
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="ViewCart.aspx.cs" Inherits="ViewCart" %>Handlevogn
GridView-kontrollen er en kraftig kontroll som kan virke komplisert først. Jeg vil ikke diskutere stilelementene fordi de er selvforklarende. (Det er noen prinsipper her som jeg ikke kommer til å forklare i dybden. Jeg skal bare prøve å få hovedideen på tvers). La oss slå det ned.
ID = "gvShoppingCart"
AutoGenerateColumns = "false"
EmptyDataText = "Det er ingenting i handlekurven din."
ShowFooter = "true"
DataKeyNames = "ProductID"
OnRowDataBound = "gvShoppingCart_RowDataBound" OnRowCommand = "gvShoppingCart_RowCommand"
La oss nå snakke om kolonnene. Vi definerer kolonnene her, og GridView tar hver rad i dataene vi leverer, og karter dataene i den raden til kolonnen den skal vises i. Den enkleste kolonnen er BoundField. I vårt tilfelle vil det lete etter en "Beskrivelse" -egenskap i vårt CartItem-objekt og vise den i den første kolonnen. Overskriften for den kolonnen vil også vise "Beskrivelse."
Vi trengte mengden som skulle vises i en tekstboks i stedet for bare å vise som tekst, så vi brukte en TemplateField. Med TemplateField kan du sette hva du vil i den kolonnen. Hvis du trenger noen data fra raden, legger du bare inn <%# Eval("PropertyName") %>. LinkButton som vi legger inn i vår TemplateField har et CommandName og et CommandArgument, som begge vil bli sendt til vår GridViews RowCommand event handler.
Den siste tingen å nevne her er at de to siste BoundFieldene har en DataFormatString spesifisert. Dette er bare en av de mange formatstrengene som ASP.NET gir. Denne formaterer tallet som en valuta. Se Microsoft-dokumentasjonen for andre formatstrenger.
Nå kan vi se på koden baksiden. Jeg har levert mange kommentarer her for å beskrive hva som skjer.
Nå har vi en fin arbeids handlekurv!
1. oktober i Screencasts av Jeffrey Way
56
Jeg er glad for å si at i dag legger vi inn vår aller første artikkel på ASP.NET. I denne skjermbildet viser jeg deg hvordan du implementerer en enkel søkefunksjonalitet i ditt personlige nettsted. Vi går over mange av de nye funksjonene i ASP.NET 3.5, for eksempel LINQ og mange av AJAX-kontrollene som leveres med Visual Studio / Web Developer.
Fortsett å lese