启网、虚拟主机、域名注册、服务器合租
精致合租、5人、10人、15人服务器合租、freebsd合租
当前位置:站长中国 > ASP实例 > ASP.NET: XML留言版第二版

ASP.NET: XML留言版第二版

2008 - 11 - 21  作者:  来源:  浏览:575  评论: 发布评论 问高手
推荐:启网 - 专业的主机、服务器合租提供商 17hz.net - 5年服务器合租精品服务
    

  Code:


1) guestpost.aspx :- The Guestbook post page


<%@ Import Namespace="System" %>


<%@ Page Language="C#" EnableSessionState="False" Debug="True" %>


<%@ Import Namespace="System.IO" %>


<%@ Assembly Name="System.Xml" %>


<%@ Import Namespace="System.Xml" %>


<%-- These are the imported assemblies and namespaces need to run the guest book --%>


<html>


<head>


<title>Welcome to Saurabh's GuestBook.</title>


<script Language="C#" runat="server">


//This method is called when the submit button is clicked


public void Submit_Click(Object sender, EventArgs e)


{


//the path to the Xml file which will contain all the data


//modify this if you have any other file or directory mappings.


//modify this if you have been directed here from Step 2 of the ReadMe file.


string datafile = "db/guest.xml" ;


//put the posting code within a Try-Catch block


try


{


//proceed only if all the required feilds are filled-in


if(Page.IsValid&&Name.Text!=""&&Country.Text!=""&&Email.Text!=""){


errmess.Text="" ;


//make an instance of the class XmlDocument


XmlDocument xmldocument = new XmlDocument() ;


//load the xml file you will use as your database.


//Since we are working on a server we have to use 'Server.MapPath()'


//to map the path to the database file //Also Open a FileStream to the Database


//Keep "FileShare.ReadWrite" mode to enable sharing


FileStream fin ;


fin = new FileStream(Server.MapPath(datafile), FileMode.Open,


FileAccess.Read, FileShare.ReadWrite) ;


xmldocument.Load(new StreamReader(fin)) ;


fin.Close();


//make an instance of DocumentNavigator class which will help us to


//navigate in the loaded XML data file.


DocumentNavigator navigator = new DocumentNavigator(xmldocument) ;


//below code is very significant as it navigates through the XML document and


//stores the required values (ps: read this code carefully)


//first move to the xml documents elements


//(in my xml file this will be the 'Guests' Node)


navigator.MoveToDocumentElement() ;


//then insert First element (FirstChild) which will contain all the information


// of a single guest posting


navigator.Insert(TreePosition.FirstChild, XmlNodeType.Element, "Guest","","") ;


//Insert the Element of Name as the First node of 'Guest'


navigator.Insert(TreePosition.FirstChild, XmlNodeType.Element, "Name","","") ;


//This is important to specify what kind of Value will the Name element contain


navigator.Insert(TreePosition.FirstChild, XmlNodeType.Text,"Name","","") ;


//assign the Name element the Value from the .Text property of the TextBox


navigator.Value=Name.Text ;


//Go back to the Parent Node ie 'Guest'


navigator.MoveToParent() ;


//Insert another Element 'Country' After the FirstChild ie. after the 'Name' node.


navigator.Insert(TreePosition.After, XmlNodeType.Element,"Country","","") ;


navigator.Insert(TreePosition.FirstChild, XmlNodeType.Text,"Country","","") ;


navigator.Value=Country.Text ;


navigator.MoveToParent() ;


navigator.Insert(TreePosition.After,XmlNodeType.Element,"Email","","") ;


navigator.Insert(TreePosition.FirstChild, XmlNodeType.Text,"Email","","") ;


navigator.Value=Email.Text;


navigator.MoveToParent() ;


navigator.Insert(TreePosition.After,XmlNodeType.Element,"Comments","","") ;


navigator.Insert(TreePosition.FirstChild, XmlNodeType.Text,"comments","","") ;


navigator.Value=Comments.Value ;


navigator.MoveToParent() ;


navigator.Insert(TreePosition.After, XmlNodeType.Element,"DateTime","","") ;


navigator.Insert(TreePosition.FirstChild, XmlNodeType.Text,"DateTime","","") ;


//set the Date time stamp of the entry


DateTime now = DateTime.Now ;


navigator.Value=now.ToShortDateString()+" "+now.ToShortTimeString() ;


//Create a stream to save the file


FileStream fout ;


fout = new FileStream(Server.MapPath(datafile), FileMode.Open,


FileAccess.Write, FileShare.ReadWrite) ;


//after making the necessary changes we Save the changes to the Xml Document


xmldocument.Save(new StreamWriter(fout)) ;


//free up the XML file from the Document file so that other programs can use it


xmldocument=null ;


fout.Close();


//Build a custom query sending the data posted to another page for display


//since it is a query we have to encode it in UTF8 format


String QueryString="Name="


+System.Web.HttpUtility.UrlEncodeToString(Name.Text,System.Text.Encoding.UTF8);


QueryString+="&&Country="


+System.Web.HttpUtility.UrlEncodeToString(Country.Text,System.Text.Encoding.UTF8);


QueryString+="&&Email="


+System.Web.HttpUtility.UrlEncodeToString(Email.Text,System.Text.Encoding.UTF8);


QueryString+="&&Comments="


+System.Web.HttpUtility.UrlEncodeToString(Comments.Value,System.Text.Encoding.UTF8);


//go to the page viewpost.aspx and append the query string at its end.


Page.Navigate("viewPost.aspx?" + QueryString);


}


else


{


//if any of the Fields are kept empty show an error message


errmess.Text="Fill in all the required fields of the Guestbook." ;


}


}


catch (Exception edd)


{


//catch any other exception that occur


errmess.Text="Cannot write to XML file because "+edd.ToString() ;


}


}


</script>


<LINK href="mystyle.css" type=text/css rel=stylesheet>


</head>


<body topmargin="0" leftmargin="0" rightmargin="0" marginwidth="0" marginheight="0">


<%-- Include a header file 'header.inc' --%>


<!-- #Include File="header.inc" -->


<br>


<h3 align="center" class="newsbody">Guestbook Post Page.</h3>


<br>


<asp:label id="errmess" text="" style="color:#FF0000" runat="server" />


<form runat="server">


<table border="0" width="80%" align="Center">


<tr >


<td class="newsheading"><b>Sign-in My GuestBook</b></td>


<td class="newsheading"> </td>


</tr>


<tr class="newsbody" >


<td>Name :</td>


<td ><asp:textbox text="" id="Name" runat="server" />


<font color=#FF0000>*</font></td>


</tr>


<tr class="newsbody">


<td>Country :</td>


<td><asp:textbox text="" id="Country" runat="server"/>


<font color=#FF0000>*</font></td>


</tr>


<tr class="newsbody">


<td>E-Mail :</td>


<td><asp:textbox test="" id="Email" runat="server"/>


<font color=#FF0000>*</font></td>


</tr>


<tr class="newsbody">


<td>Comments :</td>


<td><textarea id="Comments" cols="25" rows="4" runat="server" /></td>


</tr>


<tr class="newsbody">


<td colspan="2" >


<asp:Button class="newsheading" Text="Submit" onClick="Submit_Click" runat="server"/>


</td>


</tr>


</table>


</form>


<br>


<h4 class="newsbody"><a href="viewguestbook.aspx">Click here </a> to view GuestBook.</h4>


<br>


<!-- #Include File="footer.inc" -->


</body>


/html>


2) viewpost.aspx : The post conformation page.


<%@ Import Namespace="System" %>


<%@ Page Language="C#" Debug="true" %>


<html>


<head>


<title>Welcome to Saurabh's GuestBook.</title>


<script language="C#" runat="server" >


//execute this script when the page loads


void Page_Load(Object Src, EventArgs E)


{


//if the page is called from another page


if (!Page.IsPostBack) {


//get the different Parameters from the query string and store it


//to respective Labels


NameLabel.Text = Request.Params["Name"];


CountryLabel.Text= Request.Params["Country"] ;


EmailLabel.Text=Request.Params["Email"];


CommentsLabel.Text=Request.Params["Comments"] ;


}


if(Page.IsPostBack)


{


//else display an error


errmess.Text="This Page Cannot be called directly. " ;


}


}


</script>


<LINK href="mystyle.css" type=text/css rel=stylesheet>


</head>


<body topmargin="0" leftmargin="0" rightmargin="0" marginwidth="0" marginheight="0">


<!-- #Include File="header.inc" -->


<asp:label id="errmess" text="" style="color:#FF0000" runat="server" />


<center>


<h2 class="newsbody"><b>Thank You , for posting in My GuestBook.</b></h2>


<table align=center width="60%" border="0" cellspacing="2" cellpadding="1" >


<tr class="titheading"><td colspan="2">The information You Posted!</td></tr>


<tr class="newsbody">


<td>Name :</td>


<td><asp:label id="NameLabel" text="" runat="server" /></td>


</tr>


<tr class="newsbody">


<td>Country :</td>


<td><asp:label id="CountryLabel" text="" runat="server" /></td>


</tr>


<tr class="newsbody">


<td>E-mail :</td>


<td><asp:label id="EmailLabel" text="" runat="server"/></td>


</tr>


<tr class="newsbody">


<td>Comments :</td>


<td><asp:label id="CommentsLabel" text="" runat="server" /></td>


</tr>


</table>


<br>


<h4 class="newsbody"><a href="viewguestbook.aspx">Click here </a> to view GuestBook.</h4>


<br>


</center>


<!-- #Include File="footer.inc" -->


</body>


</html>


2) viewguestbook.aspx : The Guestbook viewing page.


<%@ Import Namespace="System" %>


<%@ Import Namespace="System.IO" %>


<%@ Import Namespace="System.Data" %>


<%@ Assembly Name="System.Xml" %>


<%@ Import Namespace="System.Xml" %>


<%@ Page Language="C#" %>


<%-- Needed Assembiles --%>


<html>


<head>


<title>Welcome to Saurabh's GuestBook.</title>


<script language="C#" runat=server>


//run the script when the Page is Loaded


public void Page_Load(Object sender, EventArgs e)


{


//the path to the Xml file which will contain all the data


//modify this if you have any other file or directory mappings.


//modify this if you have been directed here from Step 2 of the ReadMe file.


string datafile = "db/guest.xml" ;


//try-Catch block to read from an XML file


try


{


//make an instance to the XMLDataDocument class


//this class can read from an xml file in and ordered format


XmlDataDocument datadoc = new XmlDataDocument();


//Open a FileStream to the Database


FileStream fin ;


fin = new FileStream(Server.MapPath(datafile),FileMode.Open,


FileAccess.Read,FileShare.ReadWrite) ;


// Infer the DataSet schema from the XML data and load the XML Data


datadoc.DataSet.ReadXml(new StreamReader(fin));


//Databind the first table in the Dataset to the Repeater


MyDataList.DataSource = datadoc.DataSet.Tables[0].DefaultView;


MyDataList.DataBind();


//free up the XML file to be used by other programs


datadoc=null;


}


catch (Exception edd)


{


//catch any other exceptions that occur


errmess.Text="Cannot read from XML file because "+edd.ToString() ;


}


}


</script>


<LINK href="mystyle.css" type=text/css rel=stylesheet>


</head>


<body topmargin="0" leftmargin="0" marginwidth="0" marginheight="0" rightmargin="0">


<!-- #Include File="header.inc" -->


<asp:label id="errmess" text="" style="color:#FF0000" runat="server" />


<br>


<h3 align="center" class="newsbody">My Guestbook.</h3>


<ASP:Repeater id="MyDataList" runat="server">


<template name="headertemplate">


<table class="mainheads" width="100%" style="font: 8pt verdana">


<tr style="background-color:#FF9966">


<th>


Name


</th>


<th>


Country


</th>


<th>


Email


</th>


<th>


Comments


</th>


<th>


Date/Time


</th>


</tr>


</template>


<template name="itemtemplate">


<tr style="background-color:#FFFFCC">


<td>


<%# DataBinder.Eval(Container.DataItem, "Name") %>


</td>


<td>


<%# DataBinder.Eval(Container.DataItem, "Country") %>


</td>


<td>


<%# DataBinder.Eval(Container.DataItem, "Email") %>


</td>


<td>


<%# DataBinder.Eval(Container.DataItem, "Comments") %>


</td>


<td>


<%# DataBinder.Eval(Container.DataItem, "DateTime") %>


</td>


</tr>


</template>


<template name="footertemplate">


</table>


</template>


</ASP:Repeater>


<!-- #Include File="footer.inc" -->


</body>


</html>


Saurabh Nandu


  




推荐教程