发信人: dgxy2001(东格逍遥2001)
整理人: dongbao(2001-03-10 09:05:03), 站内信件
|
该控件在表格提交之后,触发ValidateUserName函数。接着使用DataSet对数据库进行查询,看是否存在与用户请求的用户名同名的记录。如果该用户名已被占用,则返回一条记录,否则不返回记录。为了进行检验,我们将结果绑定到一个隐藏的DataGrid(将visible属性设为false),然后检验它的Items集合,以及Count属性。如果Count大于0,则请求的用户名已存在。如果用户名已存在,我们返回一条信息;否则,我们继续处理表格。
请注意这是种迂回的验证方式。实际上有一个DataReader控件是专门针对这种功能设计的。DataReader可以无须绑定数据到DataGrid而进行这种类型的验证。然而在ASP+的Alpha版本中,DataReader存在着一个bug,而且不能正常工作。这个问题在Beta1版中会得到解决。我们使用的迂回方式的代码可以让本站点在基于.NET框架的ASP+下正常运行。
一旦所有的输入都经过了验证,我们被导向cookie.aspx,通过该页将数据插如数据库,同时将用户登录。在signup.aspx中,一旦数据得到验证,我们将所有的表格值存入会话变量中,然后进行重定向:
< script language="VB" runat="server">
Sub Page_Load(Source As Object, E As EventArgs)
If Page.IsPostBack And Page.IsValid Then
'Create the Session Variables froim the Form Fields
Session("strFName") = Request.Form("txtFirstName")
Session("strLName") = Request.Form("txtLastName")
Session("strAddress") = Request.Form("txtAddress")
Session("strCity") = Request.Form("txtCity")
Session("strState") = Request.Form("txtState")
Session("strZipcode") = Request.Form("txtZipcode")
Session("strEmail") = Request.Form("txtEmail")
Session("strPhone") = Request.Form("txtPhone")
Session("strUserName") = Request.Form("txtUserName")
Session("strPassword") = Request.Form("txtPassword")
Response.Redirect("cookie.aspx")
End If
.. . .
End Sub
< /script>
在cookie.aspx中,我们以会话变量的值做输入来创建一个ANSI-SQL语句。为了向数据库中添加值,我们利用ADOCommand对象。我们将SQL语句及ADOConnection对象传递给ADOCommand。设置了ADOCommand后,我们打开连接,调用ADOCommand.Execute:
< script language="VB" runat="server">
Sub Page_Load(Source As Object, E As EventArgs)
Dim cnCon As New ADOConnection
Dim dcAdd As ADOCommand
Dim strSQL As String
strSQL = "INSERT INTO Students " & _
"(FirstName, LastName, Address, City, State, " & _
"Zipcode, Phone, Email, UserName, [Password] ) " & _
"VALUES (" & _
"'" & Session("strFName") & "', " & _
"'" & Session("strLName") & "', " & _
"'" & Session("strAddress") & "', " & _
"'" & Session("strCity") & "', " & _
"'" & Session("strState") & "', " & _
"'" & Session("strZipcode") & "', " & _
"'" & Session("strPhone") & "', " & _
"'" & Session("strEmail") & "', " & _
"'" & Session("strUserName") & "', " & _
"'" & Session("strPassword") & "'" & _
")"
cnCon = Connect.ConnectToDB()
dcAdd = New ADOCommand(strSQL, cnCon)
cnCon.Open()
dcAdd.Execute()
End Sub
< /script>
新的数据已经添加进了数据库,我们的新生也登录进来了。当学生报名参加一门课程时,类似的功能被用来向报名表插入Student_ID和Session_ID。
===总结===
尽管这只是对我们将一个小型ASP站点迁移至ASP+站点要面临的一些挑战的简要的概括,我们仍然涉及了一些主要的问题。其他一些要做的修改是很小的。当然,我们还没有利用ASP+的大部分的新特性,像web服务,处理外的会话状态,以及新的认证结构,然而我们已经有了一个良好的开端。现在我们的站点正运行于.NET框架上,也运用了ASP+的某些新特性,比如基于作出请求的浏览器而渲染的HTML/DHTML,提供不同验证技巧的新服务器控件,还有能使我们在无须创建额外对象的情况下一次取回多个表的ADO+ DataSets。
|
|