狠狠爱成人网_日韩一级在线_国产综合自拍_亚洲精品韩国_亚洲视频导航_麻豆成人在线播放_欧美jjzz_一区在线视频观看_美脚丝袜一区二区三区在线观看_欧美91视频

當(dāng)前位置:系統(tǒng)之家 > 技術(shù)開發(fā)教程 > 詳細(xì)頁面

ASP.Net+XML打造留言薄

ASP.Net+XML打造留言薄

更新時(shí)間:2019-09-15 文章作者:未知 信息來源:網(wǎng)絡(luò) 閱讀次數(shù):

  一.概述:

  留言簿是網(wǎng)站的一個(gè)重要組成部分,是訪問者發(fā)表意見的場所,也是網(wǎng)站管理員了解網(wǎng)站基本運(yùn)行情況的有力工具,所以留言簿在現(xiàn)在的網(wǎng)站中扮演了十分重要的角色。

  不過在以前開發(fā)一個(gè)留言簿并不是一件容易的事,開發(fā)者的工作量往往會很大。而現(xiàn)在隨著微軟推出VS.NET,相應(yīng)的技術(shù)也推陳出新。特別是XML技術(shù)在.NET Framework中的廣泛運(yùn)用,使得整個(gè).NET構(gòu)架具有十分優(yōu)越的基礎(chǔ)。而ASP.NET中推出的嶄新的編程模型更使得開發(fā)Web應(yīng)用程序變得非常容易。本文就結(jié)合ASP.NET技術(shù)和XML技術(shù)的優(yōu)點(diǎn)向大家介紹如何打造一個(gè)屬于自己的留言簿。

  二.實(shí)現(xiàn)方法:

  一個(gè)基本的留言簿應(yīng)至少包括兩個(gè)功能:接受用戶輸入的信息并保存該信息到后臺數(shù)據(jù)庫;顯示用戶輸入的信息。用戶輸入的信息一般包括用戶名、Email地址、QQ號碼、用戶主頁、留言信息等,這些信息通常是保存在后臺數(shù)據(jù)庫的某個(gè)表中的,不過本文要運(yùn)用一個(gè)XML文件來存儲這些信息。顯示用戶輸入的信息時(shí)一般得把所有的信息都顯示出來,這里的方法就是從XML文件中讀取數(shù)據(jù)并運(yùn)用XSLT技術(shù)對其進(jìn)行格式轉(zhuǎn)換,最后以HTML的形式顯示在瀏覽器中。

  這樣,我們的留言簿就需要兩個(gè)Web頁面,一個(gè)用于接受用戶的輸入信息,另一個(gè)用于顯示用戶已經(jīng)輸入過的信息。而存儲信息的XML文件(guestbook.xml)則需具有如下的結(jié)構(gòu):

<?xml version="1.0" encoding="GB2312"?>
<guestbook>
<guest>
<name>令狐沖</name>
<email>doose@etang.com</email>
<qq>10102350</qq>
<homepage>www.doose.com</homepage>
<comment>本留言簿由"令狐沖"創(chuàng)建,希望你能喜歡哦:)要知道如何創(chuàng)建一個(gè)屬于自己的留言簿,那么就請仔細(xì)閱讀《運(yùn)用ASP.NET和XML技術(shù)打造留言簿》一文!</comment>
</guest>
</guestbook>

  下面我們先來創(chuàng)建用于接受用戶輸入信息的Web頁面-GuestBook.aspx。根據(jù)前面所提的基本要求,該Web頁面包括了以下幾個(gè)部分:留言簿標(biāo)題、"用戶名:"標(biāo)簽及輸入框、"Email地址:"標(biāo)簽及輸入框、"QQ號碼:"標(biāo)簽及輸入框、"個(gè)人主頁:"標(biāo)簽及輸入框、"留言信息:"標(biāo)簽及輸入框、一個(gè)"確定"按鈕、一個(gè)"重置"按鈕、一個(gè)"查看留言簿"按鈕,同時(shí)該頁面還包括了兩個(gè)驗(yàn)證按鈕,分別用于驗(yàn)證用戶名以及Email地址是否為空,若為空,則提醒用戶輸入。同時(shí),為使留言簿具有良好的用戶界面,我運(yùn)用了表格進(jìn)行頁面布置,這樣留言簿中的各個(gè)成分就能有條有理,層次分明了。有關(guān)該Web頁面的詳細(xì)代碼請參考文后附帶的源代碼,這里就不給出了。頁面布置的圖示如下:

圖1

  完成了該Web頁面的布置,我們僅僅是完成了一部分的工作,到此為止我們并沒有進(jìn)行過真正的編碼。我想大家對ASP.NET中的代碼后置技術(shù)肯定是了解或熟悉的,它將Web頁面的布置工作和后端的編碼工作區(qū)分開來,達(dá)到了良好的分離效果。下面我們就為該Web頁面中的三個(gè)按鈕分別編寫消息相應(yīng)函數(shù):

private void btnOK_Click(object sender, System.EventArgs e)
{
SaveXMLData();

name.Text = ";
email.Text = ";
qq.Text = ";
homepage.Text = ";
comment.Text = ";
}

private void btnReset_Click(object sender, System.EventArgs e)
{
name.Text = ";
email.Text = ";
qq.Text = ";
homepage.Text = ";
comment.Text = ";
}

private void btnView_Click(object sender, System.EventArgs e)
{
// 顯示所有用戶的留言信息
Response.Redirect( "ViewGuestBook.aspx" );
}

  其中,第一個(gè)按鈕是最重要的,它能將用戶的輸入信息存儲到XML文件中,調(diào)用的方法就是SaveXMLData();而第二個(gè)按鈕僅僅完成文本框的重置清空工作;第三個(gè)按鈕的作用是運(yùn)用另一個(gè)Web頁面顯示所有的用戶輸入信息。同時(shí),第一個(gè)按鈕在成功保存信息后也會將瀏覽器導(dǎo)向到顯示所有用戶輸入信息的頁面。
  下面我們來詳細(xì)分析一下SaveXMLData()方法,其實(shí)現(xiàn)如下:

private void SaveXMLData()
{
try
{
// 創(chuàng)建一個(gè)XmlDocument對象,用于載入存儲信息的XML文件
XmlDocument xdoc = new XmlDocument();
xdoc.Load( Server.MapPath( "guestbook.xml" ));

// 創(chuàng)建一個(gè)新的guest節(jié)點(diǎn)并將它添加到根節(jié)點(diǎn)下
XmlElement parentNode = xdoc.CreateElement( "guest" );
xdoc.DocumentElement.PrependChild( parentNode );

// 創(chuàng)建所有用于存儲信息的節(jié)點(diǎn)
XmlElement nameNode = xdoc.CreateElement( "name" );
XmlElement emailNode = xdoc.CreateElement( "email" );
XmlElement qqNode = xdoc.CreateElement( "qq" );
XmlElement homepageNode = xdoc.CreateElement( "homepage" );
XmlElement commentNode = xdoc.CreateElement( "comment" );

// 獲取文本信息
XmlText nameText = xdoc.CreateTextNode( name.Text );
XmlText emailText = xdoc.CreateTextNode( email.Text );
XmlText qqText = xdoc.CreateTextNode( qq.Text );
XmlText homepageText = xdoc.CreateTextNode( homepage.Text );
XmlText commentText = xdoc.CreateTextNode( comment.Text );

// 將上面創(chuàng)建的各個(gè)存儲信息的節(jié)點(diǎn)添加到guest節(jié)點(diǎn)下但并不包含最終的值
parentNode.AppendChild( nameNode );
parentNode.AppendChild( emailNode );
parentNode.AppendChild( qqNode );
parentNode.AppendChild( homepageNode );
parentNode.AppendChild( commentNode );

// 將上面獲取的文本信息添加到與之相對應(yīng)的節(jié)點(diǎn)中
nameNode.AppendChild( nameText );
emailNode.AppendChild( emailText );
qqNode.AppendChild( qqText );
homepageNode.AppendChild( homepageText );
commentNode.AppendChild( commentText );

// 保存存儲信息的XML文件
xdoc.Save( Server.MapPath( "guestbook.xml" ));

// 顯示所有用戶的留言信息
Response.Redirect( "ViewGuestBook.aspx" );
}
catch( Exception e ) {}
}

  該方法主要運(yùn)用了XmlDocument類、XmlElement類以及XmlText類等,這些類都是包含在System.Xml命名空間中的,所以請?jiān)诖a文件的開頭處添加using System.Xml的語句。該方法運(yùn)用了一個(gè)try-catch語句塊,在try部分首先通過創(chuàng)建一個(gè)XmlDocument對象來載入XML文件,然后創(chuàng)建根節(jié)點(diǎn)的兒子-guest節(jié)點(diǎn)并在guest節(jié)點(diǎn)下添加存儲信息所必須的五個(gè)子節(jié)點(diǎn)。所有這些子節(jié)點(diǎn)都是XmlElement對象,它們是通過XmlDocument對象的CreateElement()方法來獲取的。同時(shí),XmlDocument對象還通過CreateTextNode()方法來獲取文本信息并在后面將其添加到相對應(yīng)的節(jié)點(diǎn)中。在合理的添加guest節(jié)點(diǎn)及其子節(jié)點(diǎn)以及文本信息后,XmlDocument對象通過Save()方法將用戶輸入的信息保存到XML文件中。最后,瀏覽器會導(dǎo)向到顯示所有用戶輸入信息的頁面。這樣,該Web頁面運(yùn)行的效果如圖2所示:

圖2

  下面我們來創(chuàng)建用于顯示所有用戶輸入信息的頁面-ViewGuestBook.aspx。在該Web頁面中,我們要運(yùn)用到XSLT技術(shù),它能將前面創(chuàng)建的XML文件中的數(shù)據(jù)以HTML的形式顯示出來。由于是運(yùn)用XSLT技術(shù)顯示用戶輸入信息的,所以在設(shè)計(jì)該Web頁面時(shí)我們無需添加任何Web控件,只要重載該Web頁面的Load()方法即可。

private void Page_Load(object sender, System.EventArgs e)
{
// 創(chuàng)建一個(gè)XmlDocument對象以載入存儲信息的XML文件
XmlDocument xdoc = new XmlDocument();
xdoc.Load( Server.MapPath( "guestbook.xml" ));

// 創(chuàng)建一個(gè)XslTransform對象并導(dǎo)入XSL文件
XslTransform xslt = new XslTransform();
xslt.Load( Server.MapPath( "guestbook.xsl" ));

string xmlQuery = "http://guestbook";
XmlNodeList nodeList = xdoc.DocumentElement.SelectNodes( xmlQuery );

MemoryStream ms = new MemoryStream();
xslt.Transform( xdoc, null, ms );
ms.Seek( 0, SeekOrigin.Begin );

StreamReader sr = new StreamReader( ms );

// 顯示輸出結(jié)果
Response.Write( sr.ReadToEnd() );
}

  該方法首先創(chuàng)建一個(gè)XmlDocument對象用于載入前面創(chuàng)建的XML數(shù)據(jù)文件,之后創(chuàng)建一個(gè)XslTransform對象并導(dǎo)入相應(yīng)的XSL文件。通過該XSL文件中的內(nèi)容它能將原來的XML文件中的數(shù)據(jù)格式化為HTML的形式并顯示在瀏覽器中。因?yàn)槠渲羞\(yùn)用到了XSLT轉(zhuǎn)換,所以我們還得在代碼文件的開頭處添加using System.Xml.Xsl的語句。

  下面便是XSL文件的源代碼,其中最重要的部分是<xsl:template match="name">……</xsl:template>一塊。

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:template match="/">
<table border="1" style="border-collapse: collapse" bordercolor="Teal" align="center" width="505" height="34">
<tr>
<td valign="middle" align="center" bgcolor="Teal" colspan="2" width="505" height="85">
<font style="color:White;background-color:Teal;font-family:華文行楷;font-size:X-Large;font-weight:bold;">歡迎訪問"令狐沖"的留言簿!</font>
</td>
</tr>
<tr><td width="505" height="26" align="left" colspan="2"></td></tr>
<xsl:for-each select="http://guest">
<xsl:apply-templates select="name"/>
</xsl:for-each>
<tr>
<td valign="middle" align="center" colspan="2" width="505">
<font>
本留言簿由<a href="mailto:0024108@fudan.edu.cn">王凱明</a>開發(fā)! </font>
</td>
</tr>
</table>
</xsl:template>
<xsl:template match="name">
<tr>
<td width="95" height="26" align="right">
<font>用戶名:</font>
</td>
<td width="400" height="26" valign="middle" align="left">
<font><xsl:value-of select='.'/></font>
</td>
</tr>
<tr>
<td width="95" height="26" align="right" bgcolor="e0e0e0">
<font>Email地址:</font>
</td>
<td width="400" height="26" valign="middle" align="left" bgcolor="#e0e0e0">
<font><a HREF="mailto:{../email}"><xsl:apply-templates select="../email"/></a></font>
</td>
</tr>
<tr>
<td width="95" height="26" align="right">
<font>QQ號碼:</font>
</td>
<td width="400" height="26" valign="middle" align="left">
<font><xsl:apply-templates select="../qq"/></font>
</td>
</tr>
<tr>
<td width="95" height="26" align="right" bgcolor="#e0e0e0">
<font>個(gè)人主頁:</font>
</td>
<td width="400" height="26" valign="middle" align="left" bgcolor="#e0e0e0">
<font><a HREF="http://{../homepage}" target="_blank"><xsl:apply-templates select="../homepage"/></a></font>
</td>
</tr>
<tr>
<td width="95" height="26" valign="top" align="right">
<font>留言信息:</font>
</td>
<td width="400" height="26" valign="top" align="left">
<font><xsl:apply-templates select="../comment"/></font>
</td>
</tr>
<tr><td width="505" height="26" align="left" colspan="2"></td></tr>
</xsl:template>
</xsl:stylesheet>

  這樣,當(dāng)用戶點(diǎn)擊"查看留言簿"按鈕或是成功輸入信息后瀏覽器便導(dǎo)向到該顯示所有用戶輸入信息的Web頁面,其運(yùn)行效果圖示如下:

圖3

  三.總結(jié):

  這樣,一個(gè)具有基本功能的留言簿就完成了,從中我們可以體會到運(yùn)用ASP.NET技術(shù)開發(fā)Web應(yīng)用程序是相當(dāng)容易的,同時(shí)在結(jié)合了XML技術(shù)之后,ASP.NET可以變得更加強(qiáng)大。還有文章中介紹的XSLT技術(shù)是非常有用的,你可以參考其它相關(guān)的更多資料以使它成為你開發(fā)過程中的一個(gè)有力工具。

溫馨提示:喜歡本站的話,請收藏一下本站!

本類教程下載

系統(tǒng)下載排行

狠狠爱成人网_日韩一级在线_国产综合自拍_亚洲精品韩国_亚洲视频导航_麻豆成人在线播放_欧美jjzz_一区在线视频观看_美脚丝袜一区二区三区在线观看_欧美91视频
国产精品久久免费看| 国产农村妇女毛片精品久久莱园子 | 国内精品久久久久久久97牛牛 | 色综合久久久久久久久久久| 日韩欧美一级片| 亚洲一区在线电影| 国产成a人无v码亚洲福利| 亚洲高清二区| 69av一区二区三区| 欧美日韩欧美一区二区| 亚洲国产精品久久艾草纯爱| 粉嫩欧美一区二区三区高清影视| 狠狠噜噜久久| 欧美一a一片一级一片| 国产欧美日韩在线| 丝袜亚洲另类欧美| 精品影视av免费| 久久久久se| 欧美成人猛片aaaaaaa| 亚洲欧美日韩人成在线播放| 亚洲欧美另类综合偷拍| 国产综合色视频| 色哟哟一区二区三区| 在线观看国产91| 国产精品无码永久免费888| 久久精品国产亚洲一区二区三区| 在线播放一区| 久久久综合精品| 亚洲天堂免费看| 一区二区三区国产| 国产精品一卡二卡在线观看| 久久精品亚洲乱码伦伦中文| 亚洲精品高清在线观看| 北条麻妃一区二区三区| 国产日本欧洲亚洲| 免费观看久久久4p| 亚洲日本国产| 国产日韩三级在线| 国产精品一区二区久激情瑜伽| 亚洲综合三区| 亚洲免费观看高清| 欧美午夜视频在线| www久久久久| 懂色av一区二区夜夜嗨| 欧美日韩精品免费观看视频 | 美女网站在线免费欧美精品| 亚洲美女少妇无套啪啪呻吟| 国产精品久久久99| 欧美精品激情| 国产欧美日韩另类一区| 99精品久久久久久| www成人在线观看| 福利一区二区在线| 91精品啪在线观看国产60岁| 韩日av一区二区| 欧美亚洲免费在线一区| 琪琪一区二区三区| 91国偷自产一区二区使用方法| 午夜激情一区二区| 亚洲欧美日韩综合国产aⅴ| 一区av在线播放| 亚洲综合丁香| 日精品一区二区| 日本乱人伦一区| 激情综合色播激情啊| 欧美日韩免费高清一区色橹橹| 美国十次综合导航| 91精品国产综合久久香蕉的特点| 国产一区欧美二区| 91精品久久久久久蜜臀| 国产成人免费xxxxxxxx| 精品国产一区二区在线观看| 女人香蕉久久**毛片精品| 久久久九九九九| 一区在线免费观看| 亚洲影视在线播放| 色网站国产精品| 激情伊人五月天久久综合| 欧美一区二区三区在线| 99精品久久久久久| 国产精品国产三级国产aⅴ无密码 国产精品国产三级国产aⅴ原创 | 久久av二区| 老司机一区二区| 欧美r级电影在线观看| 欧美精品aa| 一区二区三区欧美日| 色香蕉成人二区免费| 丰满少妇久久久久久久| 极品少妇一区二区三区精品视频| 欧美视频在线观看一区| 99视频一区二区| 一区二区三区美女| 欧美乱熟臀69xxxxxx| 99在线精品一区二区三区| 1区2区3区欧美| 一区二区久久| 久久久久高清| 激情久久久久久| 成人免费视频视频在线观看免费 | 一区二区三区欧美在线| 国产一区二三区| 日韩av一区二区在线影视| 夜夜揉揉日日人人青青一国产精品| 日韩午夜精品视频| 欧美综合欧美视频| 亚洲人成网站在线观看播放| 成人激情开心网| 国产九色精品成人porny| 同产精品九九九| 亚洲成精国产精品女| 亚洲精品视频观看| 国产成人在线视频免费播放| 成人免费视频视频| 欧美私人啪啪vps| 欧美无砖砖区免费| 欧美xxxxxxxx| 亚洲激情校园春色| 午夜视频一区二区三区| 亚洲一区bb| 亚洲精品日韩在线观看| 精品91视频| 免费视频最近日韩| 日本美女视频一区二区| 成人视屏免费看| 红桃视频国产精品| 欧美在线视频日韩| 国产精品资源在线看| 久久女同性恋中文字幕| 一区一区视频| 久久激情五月婷婷| 精品国产免费久久| 伊人久久亚洲影院| 日本亚洲电影天堂| 欧美本精品男人aⅴ天堂| 国内一区二区三区| 日韩精品欧美成人高清一区二区| 制服视频三区第一页精品| 欧美日韩高清一区二区三区| 亚洲乱亚洲高清| 你懂的一区二区| 成人av片在线观看| 韩国成人福利片在线播放| 亚洲成人精品一区二区| 中文字幕一区二区三区四区| 久久伊人蜜桃av一区二区| 欧美欧美午夜aⅴ在线观看| 美女亚洲精品| 国产日韩欧美一区在线| 在线欧美日韩| 免费在线观看成人av| 国产精品黄色| 97精品久久久午夜一区二区三区| 国产精品亚洲午夜一区二区三区| 视频在线观看一区| 亚洲电影你懂得| 亚洲美女区一区| 亚洲女爱视频在线| 国产精品久久久久久久久图文区| 久久久精品影视| 久久久高清一区二区三区| 日韩欧美国产综合在线一区二区三区| 欧美视频你懂的| 欧美日韩在线观看一区二区 | 国产丝袜欧美中文另类| 欧美精品一区二区三区蜜桃视频| 日韩欧美在线观看一区二区三区| 欧美日韩国产bt| 欧美精品v国产精品v日韩精品| 色婷婷av久久久久久久| 久久久久国产精品一区三寸 | 国产风韵犹存在线视精品| 国产一区二区三区不卡在线观看| 美女网站一区二区| 精品写真视频在线观看| 国产一区二区免费视频| 国产成a人无v码亚洲福利| 成人午夜免费视频| 91网站最新网址| 欧美人成网站| 日韩亚洲视频在线| 国产女主播一区二区| 91国内精品野花午夜精品| 欧美挠脚心视频网站| 国产精品自拍av| 国产精品美女久久久久久久网站| 亚洲精品日韩精品| 日韩成人av影视| 色又黄又爽网站www久久| 五月天一区二区| 欧美一区在线看| 日韩亚洲电影在线| 国产激情视频一区二区在线观看 | 久久精品免视看| 国产激情一区二区三区四区| 欧美日韩国产系列| 日本91福利区| 精品少妇一区二区三区免费观看 | 在线播放91灌醉迷j高跟美女| 久久人人爽人人爽| 精品精品欲导航|