Läs hellre denna artikel:
http://aspdotnet.nu/post/Skapa-en-gastbok-med-Linq-2-XML.aspx
Här kommer den första artikeln på denna blogg. Denna kommer att visa hur du enkelt skapar dig en gästbok utan någon databas. Istället lagras alla inlägg i en XML-fil. Detta fungerar bra för mindre gästböcker, men är inte att rekommendera för stora siter.
Börja med att skapa en ny ASP.NET Web Site i Visual Studio eller Visual Web Express, beroende på vilket
program du använder.
Vi börjar i Source-läget, det första som behövs är några textboxar som besökaren kan mata in gästboksinlägget i. De
kontroller som behövs är tre textboxar, observera TextMode="MultiLine" den sista, detta gör att textboxen skapas
som en <Textarea>. Sedan så lägger vi till en knapp som vi kopplar ett OnClick-event till.
-
// Vi börjar med att kolla vi har någon gb.xml, har vi det behöver vi inte skapa
-
// den igen.
-
if (!System.IO.File.Exists(Server.MapPath("App_Data") + @"\gb.xml"))
-
{
-
-
// Vi börjar med att skapa ett objekt av typen XmlWriter som skapar
-
// en XML-fil som vi kan skriva till.
-
XmlWriter writer = XmlTextWriter.Create(Server.MapPath("App_Data") + @"\gb.xml");
-
// Huvudelementet i våran XML-fil skall heta messages, det
-
// är inom denna som vi samlar alla våra inlägg, i xml-filen kallade post
-
writer.WriteStartElement("messages");
-
// Skapar elementet post
-
writer.WriteStartElement("post");
-
// Skapar ett element och skriver namnet i den, de följande raderna
-
// gör motsvarande uppgift.
-
writer.WriteElementString("name", txbName.Text);
-
writer.WriteElementString("email", txbEmail.Text);
-
writer.WriteElementString("date", DateTime.Now.ToString());
-
// För att vi inte ska drabbas av otrevliga html-inlägg eller andra kodsnuttar
-
// i vår gästbok så html-kodar vi det med metoden Server.HtmlEncode,
-
// vilket innebär att alla html-taggar skrivs ut som text. För att de enterslag
-
// som användarna skriver in skall skrivas ut så får vi
-
// "göra om" enterslagen till <br />-taggar som förstås av webbläsaren, vilket utförs med
-
// hjälp av replace, enterslagen hittar vi med System.Environment.Newline.
-
writer.WriteElementString("message", Server.HtmlEncode(txaMessage.Text.Replace(System.Environment.NewLine, "<br />")));
-
// Skriv ut slutet på post
-
writer.WriteEndElement();
-
// Skriv ut slutet på messages
-
writer.WriteEndElement();
-
-
// För att det skall skrivas till filen anropas vi metoden Flush
-
writer.Flush();
-
// Sist men inte minst stänger vi vårat objekt.
-
writer.Close();
-
// Skicka tillbaka oss till förstasidan
-
Response.Redirect("default.aspx");
-
}
-
// Om filen redan fanns så får vi gå lite annorlunda till väga.
-
else
-
{
-
// Börjar med att skapa ett XmlDocument-objekt som vi laddar
-
// in våran XML-fil till.
-
XmlDocument doc = new XmlDocument(); -
doc.Load(Server.MapPath("App_Data") + @"\gb.xml");
-
// Sedan hämtar vi ut root-elementet, det översta, i detta fall messages
-
XmlElement root = doc.DocumentElement;
-
// Sedan skapar vi en nod som skall heta post, detta bestämde vi i koden
-
// som skapde XML-filen
-
XmlNode newpost = doc.CreateNode(XmlNodeType.Element, "post", "");
-
// Nästa steg är att skapa de element som skall finnas i vårat post-element, detta
-
// blir name, email, date, och message. Jag förklarar bara det första, då alla fungerar
-
// på samma sätt.
-
// Först skapar vi elementet name
-
XmlElement name = doc.CreateElement("name");
-
// Sedan lägger vi till en Textnod i detta element som child, vilket är
-
// texten som vi vill skall finnas inom name-taggen
-
name.AppendChild(doc.CreateTextNode(txbName.Text));
-
// Sedan lägger vi till detta element till post-elementet.
-
newpost.AppendChild(name);
-
XmlElement email = doc.CreateElement("email");
-
email.AppendChild(doc.CreateTextNode(txbEmail.Text));
-
newpost.AppendChild(email);
-
XmlElement date = doc.CreateElement("date");
-
date.AppendChild(doc.CreateTextNode(DateTime.Now.ToString()));
-
newpost.AppendChild(date);
-
XmlElement mess = doc.CreateElement("message");
-
mess.AppendChild(doc.CreateTextNode(txaMessage.Text.Replace(System.Environment.NewLine, "<br />")));
-
newpost.AppendChild(mess);
-
// För att vi ska få vårat element att hamna överst, vi vill ju såklart
-
// ha våra element sorterade med senaste först så använder vi metoden
-
// InsertBefore på våran root-element (messages), där vi anger vilken post som ska in (newpost)
-
// och före vilket element det skall in, vilket vi får fram med root.FirstChild
-
root.InsertBefore(newpost, root.FirstChild);
-
// Sist men inte minst skall vi spara vårat uppdaterade xml-document.
-
doc.Save(Server.MapPath("App_Data") + @"\gb.xml");
-
// Skicka tillbaka oss till förstasidan
-
Response.Redirect("default.aspx");