转至繁体中文版     | 网站首页 | 图文教程 | 资源下载 | 站长博客 | 图片素材 | 武汉seo | 武汉网站优化 | 
最新公告:     敏韬网|教学资源学习资料永久免费分享站!  [mintao  2008年9月2日]        
您现在的位置: 学习笔记 >> 图文教程 >> 站长学院 >> Web开发 >> 正文
PRADO 2.0.1 使用教程专题 -- 验证控件使用教程         ★★★★
TValidator验证组件基类TRequiredFieldValidator输入控件值为非空字符串TCompareValidator比较用户输入控件包含的值,与另一个特定控件的值或常量相匹配TRangeValidator检验用户控件的输入值的在指定的上下边界范围内。TRegularExpressionValidator检验一个输入控件的值是与一个特定正则表达式相匹配。TEmailAddressValidator检验一个输入控件的值是否正确的email地址TCustomValidator执行用户自定义验证逻辑检查用户的输入 (服务器端或客户端,或两者同时执行)TValidationSummary在Web页面以摘要的形式或者弹出框方式显示所有验证控件的错误摘要信息

验证在页面初始化(也就是在视图状态,Postback数据执行之后)之后,在点击或变化事件之前执行。

你可以在页面初期,比如在页面加载的过程,通过调用控件的Validate方法,执行验证操作。

如果用户的浏览器支持最新的javascript标准,客户端验证将在表单提交之前执行。只有当客户端的验证全部通过了才进行表单提交。如果浏览器不支持javascript,表单将提交并进行服务器端验证操作。服务器端的验证始终是执行的。

验证控件和范例

在Prado中,验证控件做为Web控件添加到模板文件中。我们用一个用户注册表单的验证过程做为范例,在这个范例中将用到了上述的多个验证控件。

我们想要建立下面这个简单的注册表单。

Image:Validation_Tutorial_Form1.gif

模板代码如下,另存为“ValidatorExample.tpl”文件到您的应用程序目录下。至于表单样式,就取决于你的想象能力了。

<h2>New User Registration</h2>

<com:TForm >

<fieldset>
<legend>Login details (all fields are required)</legend>
<label>Username:</label>
<com:TTextBox ID="Username" />

<label>Email Address:</label>
<com:TTextBox ID="Email" />

<label>Password:</label>
<com:TTextBox ID="Password" TextMode="Password" />

<label>Password Again:</label>
<com:TTextBox ID="PasswordCheck" TextMode="Password" />

</fieldset>

<div class="buttons">
<com:TButton Text="Register New User" OnClick="registerUser" />
</div>

<com:TLabel ID="msg" class="msg"/>

</com:TForm>

注意,在实际项目中<label>应该拥有和表单的输入控件相对应的属性值。

模板页相应的代码类如下所示,另存文件为"ValidatorExample.php"到你的应用程序目录下。

/**
 * A simple example to demonstration the simplicity and 
 * intuitiveness of adding input validation using PRADO. 
 */
class ValidatorExample extends TPage
{

    /**
     * Register new user event.
     * Add a new user into the database.
     * @param TControl sender of the event
     * @param TEventParameter event parameter
     */
    function registerUser($sender, $param)
    {
        $msg = $this->msg;

        // check that all the validators were successful.
        if($this->isValid())
        {
            // add the new user details into a database
            // but for this example, we will just output a message.
            $msg->setText(''''User Added'''');
            $msg->setStyle(''''color:blue'''');
        }
    }
}

当单击"Register New User"按钮,可以看到在该按钮下方出现了"User Added"的蓝色提示消息

当前,表单没有执行验证,以下操作可能导致错误产生:

  • 用户在没有任何输入情况下直接单击"Register New User"按钮。
  • 用户提供了虚假的Email地址。我们需要选择Email的地址格式进行输入验证,以防止虚假的输入。
  • 两次密码输入不匹配。

更多情况下,严格的输入要求列表如下:

用户名非空字符,不能与已经存在用户名重复。Email地址非空字符,必须与预先设置email格式相匹配.一般采用默认格式。密码非空字符,字符长度大于等于六位重复密码非空字符,两次密码输入必须匹配

我们将为控件逐个添加适当的验证控件。

TRequiredFieldValidator


TRequiredFieldValidator验证输入控件具有非空字符,是最简单的验证控件。为保证我们的输入控件的值是必须的,我们为每一个输入控件添加一个TrequiredFieldValidator控件,以”UserName”为例,如下:

<label>Username:</label>
<com:TTextBox ID="Username" /> <br />
<com:TRequiredFieldValidator 
        ControlToValidate="Username" 
        Display="Dynamic"
        ErrorMessage="Please choose a username." />

Where ControlToValidate is the ID of the input component that requires validation. In this case, the "Username" is a required field. 其中,ControlToValidate属性是需要验证的输入控件的ID,通过这种方式,“username”控件必需有输入值的。

每一个验证控件都拥有以下属性,这些属性定义在TValidator类中。

ControlToValidate
设置被验证控件的ID路径。所谓ID路径是指从验证控件的父控件到被验证控件的ID序列(用点连接)。例如,如果HomePage是Validator和SideBar的父控件,而 SideBar是UserName的父控件,那么验证UserName所需的ID路径就"SideBar.UserName"
ErrorMessage
当验证失败时,验证控件会显示的文本消息。
Display
.验证控件的出错信息是否动态显示,允许以下值:NoneStaticDynamic,默认值是Static。
None,不显示任何错误验证信息。
Dynamic,当验证失败显示验证错误信息。
Static,无论验证成功或失败,验证控件都显示出错信息。

(此处英文表述不恰当,实际上的效果是,Static的错误信息会占据网页空间(正常情况下并不显示)。而Dynamic的效果则是:错误信息正常情况下并不占网页空间(当然也不显示)。 )

EnableClientScript
指定是否执行客户端浏览器验证。默认为 true.

除包含上述属性外, TRequiredFieldValidator增加了以下属性

InitialValue
当被验证的输入控件失去焦点时,改变的值与初始值(initialValue)相匹配,验证失败。(译注:InitialValue 属性指示您不希望用户在输入控件中输入的值。当验证执行时,如果输入控件包含该值,则其验证失败。)

同样的,如下例,你可以为其他输入控件添加TRequiredFieldValidator

<h2>New User Registration</h2>

<com:TForm >

<fieldset>
<legend>Login details (all fields are required)</legend>
<label>Username:</label>
<com:TTextBox ID="Username" /> <br />
<com:TRequiredFieldValidator 
        ControlToValidate="Username" 
        Display="Dynamic"
        ErrorMessage="Please choose a username." />

<label>Email Address:</label>
<com:TTextBox ID="Email" /> <br />
<com:TRequiredFieldValidator 
        ControlToValidate="Email" 
        Display="Dynamic"
        ErrorMessage="Please enter your email address." /> 

<label>Password:</label>
<com:TTextBox ID="Password" TextMode="Password" /> <br />
<com:TRequiredFieldValidator 
        ControlToValidate="Password" 
        Display="Dynamic"
        ErrorMessage="Please choose a password with 6 or more characters." />

<label>Password Again:</label>
<com:TTextBox ID="PasswordCheck" TextMode="Password" /> <br />
<com:TRequiredFieldValidator 
        ControlToValidate="PasswordCheck" 
        Display="Dynamic"
        ErrorMessage="Please re-enter your password." />

</fieldset>
<div class="buttons">
<com:TButton Text="Register New User" OnClick="registerUser" />
</div>

</com:TForm>

在没有任何输入的情况下,单击"Register New User"按钮,验证器将被触发,并动态显示错误信息。如果您的浏览器支持javascript,表单将不被提交,验证器在客户端运用javascript进行验证操作。

Image:Validation_Tutorial_Form2.gif

接下来是验证用户名的唯一性,我们需要检测输入的用户名是否已经被注册。如果用户名已经存在数据库中,我们需要一个自定义的验证控件。我们将在下面的章节中介绍自定义控件的使用。

TEmailAddressValidator

在我们的范例中,下一个需要验证的是Email地址的输入控件,验证email地址的正确性是单调乏味和复杂的。简单一点,我们只需要检测 email地址是否一个字符串形式。稍微复杂一点的,需要检测这个email地址是否已经存在,这个一过程包含了验证服务器端该email地址是否已经存在并且该用户帐号是有效的。

PRADO支持使用正则表达式进行简单的email地址的匹配验证。另外,如果您服务器上安装的php支持checkdnsrr函数,PRADO可以通过检测DNS记录来验证该email地址的服务器是否存在。

我们通过默认的匹配模式来验证email地址,举例如下:

<label>Email Address:</label>
<com:TTextBox ID="Email" /> <br />
<com:TRequiredFieldValidator 
        ControlToValidate="Email" 
        Display="Dynamic"
        ErrorMessage="Please enter your email address." /> 
<com:TEmailAddressValidator
        ControlToValidate="Email"
        Display="Dynamic"
        ErrorMessage="Please check your email address for typing errors." />

采用默认的email地址的正则表达式进行匹配验证是很高效的。你可以设置RegularExpression属性自定义正则表达式。可以通过http://regexlib.com/查找更多的email地址和其他的正则表达式。


TRegularExpressionValidator

介绍完email地址的验证控件,我们看看TEmailAddressValidator控件的基类(父类)正则表达式验证控件,该控件在其基类(TValidator)基础上增加了以下属性:

RegularExpression
被验证的控件相匹配的正则表达式,一些常用的正则表达式如下:

PRADO 2.0.1 使用教程专题 -- 验证控件使用教程

作者:闵涛 文章来源:闵涛的学习笔记 点击数:2257 更新时间:2009/4/23 10:40:11
 

验证控件使用教程

From PRADO Wiki

A Tutorial for Using Validators
Xiang Wei Zhuo
Copyright 2004. All Rights Reserved.
翻译:张祖良 (aliang.cn@gmail.com)
说明:欢迎通过邮件或者论坛方式指正翻译过程中的不当之处。


目录

1 概 述

2 验证控件和范例
2.1 TRequiredFieldValidator
2.2 TEmailAddressValidator
2.3 TRegularExpressionValidator
2.4 TCompareValidator
2.5 TRangeValidator
2.6 TCustomValidator
2.7 TValidationSummary
3 总结
4 完整代码列表
5 参考资料

概 述

Web应用程序的主要应用之一是验证用户的输入信息,以确保输入数据的完整性和安全性。 假定您从用户收集例如用户注册之类的信息,用户输入错误的或不符合格式的数据, 如错误的Email地址或邮政编码,这些信息就如同垃圾数据并且对系统造成潜在的威胁。 因此,对用户的输入信息进行验证是相当重要,至少,是输入信息格式上的验证。

验证用户输入信息的过程就是进行表单的验证。这一验证过程一般在两个位置进行, 客户端验证: 使用客户端的javascript脚本验证,和服务器端验证: 使用服务器端脚本验证,如PHP。验证输入过程中,服务器端是必须,而客户端则是可选的。如果客户端浏览器不支持javascript,则只有服务器端验证起作用。

在Prado中,当单击如 TButton,TLinkButtonTImageButton 控件,并且这些控件的CausesValidation属性设置为true时,执行验证操作.也可以使用TPagevalidate()方法开始手动的验证。

验证控件始终在服务器端执行,也可选择javascript进行客户端的验证. 客户端验证需要比较新的浏览器的支持,如Internet Explorer 6.0, Firefox 1.0, Safari 1.2等。客户端的javascript在用户输入数据提交到服务器端前进行验证,通过客户端检测到错误,增强了验证过程的响应,避免了不必要的服务器端往返操作。

Prado 提供了一套的验证器控件,如下:

Prado中验证控件及其用途列表
验证类名称用途输入字段有效输入的要求
教程录入:mintao    责任编辑:mintao 
  • 上一篇教程:

  • 下一篇教程:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      注:本站部分文章源于互联网,版权归原作者所有!如有侵权,请原作者与本站联系,本站将立即删除! 本站文章除特别注明外均可转载,但需注明出处! [MinTao学以致用网]
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)

    同类栏目
    · Web开发  · 网页制作
    · 平面设计  · 网站运营
    · 网站推广  · 搜索优化
    · 建站心得  · 站长故事
    · 互联动态
    更多内容
    热门推荐 更多内容
  • 没有教程
  • 赞助链接
    更多内容
    闵涛博文 更多关于武汉SEO的内容
    500 - 内部服务器错误。

    500 - 内部服务器错误。

    您查找的资源存在问题,因而无法显示。

    | 设为首页 |加入收藏 | 联系站长 | 友情链接 | 版权申明 | 广告服务
    MinTao学以致用网

    Copyright @ 2007-2012 敏韬网(敏而好学,文韬武略--MinTao.Net)(学习笔记) Inc All Rights Reserved.
    闵涛 投放广告、内容合作请Q我! E_mail:admin@mintao.net(欢迎提供学习资源)

    站长:MinTao ICP备案号:鄂ICP备11006601号-18

    闵涛站盟:医药大全-武穴网A打造BCD……
    咸宁网络警察报警平台