• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

适用于ASP.NET的留言本(翻译)

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

目录

绪论

这是一个允许web站点上的访问者在留言本上留言的项目。项目建立了两个部分:

  • 在留言本上留言。
  • 浏览留言本上的内容。

数据库

这个留言本使用的是放在服务器上的一个名叫 guestbook.xml 的文件来存储数据的。为了处理特殊字符,将 XML 文件的编码设置为 ISO-8859-1。 下面是 XML 文件的结构:

 <?xml version="1.0" encoding="ISO-8859-1" ?>
<guestbook>
    
<guest private="yes">
        
<name>Laurent Kemp?t;/name>
        
<homepage url="http://perso.wanadoo.fr/laurent.kempe/">Tech Head</homepage>
        
<location>Illzach, France</location>
        
<comment>First to sign the guestbook ;)</comment>
        
<date>Thursday, May 30, 2002 - 10:29 AM</date>
    
</guest>
</guestbook>

你将被提示输入以下信息:

  • Name (姓名)
  • E-Mail (电子邮件)
  • Homepage title (主页标题)
  • Homepage URL (主页网址)
  • Location (地点)
  • Comments (留言内容)
  • PRIVATE (私有) - 我只想让站长看到我的电子邮件地址

应用(这里我将Application翻译成应用,不知道合不合适)

为了更加方便地改变留言本的显示方式,有必要将编码和数据分离开来。为了这个目标,我使用 XSLT 来将 XML 文件转换成 HTML 文件,然后将之返回到客户端。

留言

允许访问者留言的 Web 窗体叫 'Sign.aspx'。这个页面要求留言者在文本框中填写一些内容,而这些内容将显示在留言本中。为了确保留言者一定要在文本框中输入内容,我们使用 RequiredFieldValidator 控件来验证数据的有效性。同样为了验证留言者输入了正确的电子邮箱地址,我们使用 RegularExpressionValidator 控件。

当访问者填写了他留言的内容后,单击 Continue 按钮,页面将会触发按钮的Click事件,从而执行 ButtonContinue_Click 方法里的代码。该方法首先加载 XML 数据库,然后获取访问者留言的内容并将之添加到 XML 文件的开始部分。然后新的数据库就会被保存到服务器的磁盘上,同时将访问者重定向到显示页面。


private void ButtonContinue_Click(object sender, System.EventArgs e)
}

我们使用 addTextElement 方法来建立一个新的访问者条目到数据库中:

private void addTextElement( XmlDocument doc, XmlElement nodeParent, string strTag, string strValue )
}

显示

为了显示留言本所有的条目,我们在项目中添加另一个 Web 窗体,取名 'View.aspx'。在这个页面的 Page_Load 方法中,我们加载了 XML 数据库和 XSLT 文件。我们转换数据并将结果输出到 Literal Web 窗体控件中。


private void Page_Load(object sender, System.EventArgs e)
}

所有从 XML 到 HTML 的转换工作都是 guestbook.xslt 文件做的。这个转换需要两个参数: lowerbound and upperbound,它们定义了将要显示在页面上的数据的下限和上限值。基本上,我们所做的就是从下限到上限进行循环,然后转换数据:

<xsl:for-each 
  
select="//guest[position() <= $upperbound and position() >= $lowerbound]">
    
<xsl:apply-templates select="name"/>
</xsl:for-each>

举个例子,下面就是一个转换程序,它做的就是:假如留言者没有选择它的留言是私有的,则将它的留言和电子邮件地址一起显示出来

<xsl:template match="name">
    
<xsl:choose>
        
<xsl:when test="../@private='yes'">
            
<font face="verdana" size="2">
                
<b><xsl:value-of select='.' /></b>
            
</font>
        
</xsl:when>
        
<xsl:otherwise>
            
<font face="verdana" size="2">
                
<b><HREF="mailto:{../email}"><xsl:value-of select='.' ></a></b>
            
</font>
        
</xsl:otherwise>
    
</xsl:choose>
</xsl:template>

你可以查看 guestbook.xslt 文件以了解它的更多信息。

总结

在这个例子中,你将数据和处理过程分离开来, XML 起了很大的作用。如果想要改变留言本的显示效果,你只需对 guestbook.xslt 文件做一些改变。

面临过的问题

  • 无。

历史

  • 版本 1.00 - 2002年5月30

    第一次发布。

原文http://www.codeproject.com/aspnet/guestbooklk.asp,第一次翻译,还请大家批评指正


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap