广

ASP.NET

  • IOS开发
  • android开发
  • PHP编程
  • JavaScript
  • ASP.NET
  • ASP编程
  • JSP编程
  • Java编程
  • 易语言
  • Ruby编程
  • Perl编程
  • AJAX
  • 正则表达式
  • C语言
  • 编程开发

    ASP.NET设计控件净化网站语言

    2018-04-08 09:03:22 次阅读 稿源:互联网
    广告

      一、概述

      考虑一下这种情形:你为一个Web网站写了一个应用程序,它的功能是接受用户的输入并将输入内容永久保存,例如保存到数据库,另外还要在网站上显示出用户输入的内容,例如论坛就是一个很典型的例子。

      如果用户来源很杂,必须考虑如何防止用户提交和张贴攻击性(或者色情的、庸俗的)的内容。可能的解决方案包括:

      ⑴ 将用户群限制到一个封闭的用户团体,即要求用户使用程序功能之前必须先注册/登录。这样,由于每次提交的内容都可以追查到提交者,用户破坏网站规则的可能性就小了很多。如果有用户做出了不应该做的事,你就可以核实用户身份,予以相应的处理。

      ⑵ 在网站上发布用户提交的内容之前,先由管理员审阅。很多时候,由于人力资源有限,这个办法不一定行得通。

      ⑶ 禁止用户提交攻击性内容。这是最理想的解决办法,把问题解决在起源。但具体应该怎么实现呢?

      本文介绍的方案以一个复合控件为基础,利用一个XML文件来定义攻击性词语。我们将用VB.NET编写这个复合控件,用普通的文本编辑器和命令行编译器(vbc)完成整个工程的构建。

      在正式编写控件之前,首先我们来简单地回顾一下ASP.NET中控件的概念。本文出现的所有控件都是服务器控件,它们在服务器上运行,将HTML代码发送到客户端。要理解控件的分类,可以从控件是否嵌入到Web表单页面(因而采用按需编译方式)或预先编译的角度来观察。微软定义了下列ASP.NET服务器控件:HTML服务器控件,Web服务器控件,验证控件,用户控件。

      前三种控件读者应该已经比较熟悉了,对于开发者来说,它们是最简单的控件类型,在ASP.NET中已经由微软为我们编写好。用户控件则有所不同。用户控件是“包装”成.ascx页面形式的.aspx页面,其他.aspx页面可以通过注册和实例化来调用用户控件的功能。这是一种被寄予厚望的服务器端控件,对于ASP/ASP.NET开发者来说,它代表着一大进步,特别地,现在编写控件的语言已经全面支持面向对象技术。

      ASP.NET用户控件由一个或多个服务器控件、静态HTML元素构成,可以包含额外的代码,每个用户控件封装一组特定的功能。用户控件可以通过简单地扩展现有服务器控件(控件组)得到,例如,带有旋转功能的图形控件,在文本框中保存日期的日历控件。

      二、开发复合控件

      控件要检查用户提交的内容是否包含“攻击性”词语,攻击性词语由一个XML文件定义,XML文件的结构如下:

      

    <?xml version="1.0"? encoding="GB2312"><words><word>词语一</word><word>词语二</word></words>

      本文的复合控件(Composite)包含三个ASP.NET服务器控件:一个Textbox控件,一个Label控件,还有一个Button控件。当用户点击Button控件,Composite检查用户提交的文本是否包含了XML文件中指定的词语(XML文件的默认名字是bad_words.xml,通过一个自定义属性定义),并抛出一个自定义事件。另外,Composite控件还将它的Label子控件的一个Text属性显露成顶级属性。

      复合控件可以有选择地将子控件显露成属性,或者有选择地将子控件的属性和事件作为顶级属性和事件显露出来。当复合控件整合来自子控件的属性时,它通常只是简单地委托子控件执行操作,如下面的例子所示:

      

    // 将操作委托给标签对象,标签对象是一个// System.Web.UI.WebControls.Label的实例Public Property Text() As StringGetEnsureChildControls()Return label.TextEnd GetSetEnsureChildControls()label.Text = valueEnd SetEnd Property

      我们需要一个文本输入框让用户输入内容,一个按钮来提交表单,还要一个向用户反馈信息的文本标签。下面我们来看看Web表单的代码,复合控件就是在这里实例化的:

      【composite.aspx】

      

    <%@ page language="vb" debug="false" trace="false" %><%@ Register TagPrefix="Custom" Namespace="CustomControls" Assembly = "CustomControls" %><html><script language="VB" runat=server>Private Sub CheckText(sender As Object, e As CheckEventArgs)If e.Match = false ThenComposite.Text = "<h2>发布内容请遵守本站规则!不得发布攻击性言辞!</h2>"ElseComposite.Text = "你提交的内容已通过检查!"End IfEnd Sub</script><body><h1>语言净化控件实例</h1><br><form runat=server><Custom:Composite id = "Composite" OnCheck = "CheckText"filename = "bad_words.xml" runat = server/></form></body></html> 

    一起学吧部分文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与一起学吧进行文章共享合作。

    广告
    广告
    广告