|
![]() |
名片设计 CorelDRAW Illustrator AuotoCAD Painter 其他软件 Photoshop Fireworks Flash |
|
有了CustomValidator控件,我们可以书写自己的客户端或服务器的验证代码,从而进行验证。在这个站点的原始版本中,我们将输入表格中的数据传递给cookie.asp页,在该页执行验证后,若产生错误便传回错误代码。为了简化整个过程,我们打算将数据传回给signup.aspx页,在那儿执行验证,假如一切ok就进行重定向。这样一来,所有的验证都被集中在一个ASP+页面上了(而在ASP中,只能集中在cookie.asp页上)。 以下示例如何用CustomValidator来检验用户名: Function ValidateUserName(ByVal objSource As Object, ByVal strUserName As String) As Boolean Dim dscUser As ADODataSetCommand Dim dsUser As New DataSet Dim dvUser As DataView Dim strSQL As String strSQL = "SELECT UserName FROM Students " & _ "WHERE UserName = \\'" & strUserName & "\\'" dscUser = New ADODataSetCommand(strSQL, Connect.ConnectToDB()) dscUser.FillDataSet(dsUser, "User") UserGrid.DataSource = dsUser.Tables("User").DefaultView UserGrid.DataBind() If UserGrid.Items.Count > 0 Then ValidateUserName = False Else ValidateUserName = True End If dvUser = New DataView(dsUser.Tables("User")) End Function < /script> [page stuff...] < asp:DataGrid id="UserGrid" visible=false runat=server /> < asp:CustomValidator runat=server ControlToValidate = "txtUserName" onServerValidationFunction = "ValidateUserName" errorMessage = "The User Name you chose is taken. Please chose another." ForeColor = "#CC3300" display = "dynamic" /> 该控件在表格提交之后,触发ValidateUserName函数。接着使用DataSet对数据库进行查询,看是否存在与用户哀求的用户名同名的记录。假如该用户名已被占用,则返回一条记录,否则不返回记录。为了进行检验,我们将结果绑定到一个隐藏的DataGrid(将visible属性设为false),然后检验它的Items集合,以及Count属性。假如Count大于0,则哀求的用户名已存在。假如用户名已存在,我们返回一条信息;否则,我们继承处理表格。 请注重这是种迂回的验证方法。实际上有一个DataReader控件是专门针对这种功能设计的。DataReader可以无须绑定数据到DataGrid而进行这种类型的验证。然而在ASP+的Alpha版本中,DataReader存在着一个bug,而且不能正常工作。这个问题在Beta1版中会得到解决。我们使用的迂回方法的代码可以让本站点在基于.NET框架的ASP+下正常运行。 返回类别: 教程 上一教程: 将站点加入频道栏源代码 下一教程: 基于ACCESS数据库的纯asp论坛制作心得 您可以阅读与"从ASP迁移至ASP+--CustomValidator控件"相关的教程: · 从ASP迁移至ASP+--进入DataSet · 从ASP迁移至ASP+ --处理会话变量 · 从ASP迁移至ASP+ --进入DataSet · 从ASP迁移至ASP+--最初的考虑(一) · 从ASP迁移至ASP+--处理会话变量 |
![]() ![]() |
快精灵印艺坊 版权所有 |
首页![]() ![]() ![]() ![]() ![]() ![]() ![]() |