View
218
Download
0
Tags:
Embed Size (px)
Citation preview
Mark Dixon Page 1
20 – Modular Design in ASP
Mark Dixon Page 2
Session Aims & Objectives• Aims
– Highlight modular design techniques in ASP
• Objectives,by end of this week’s sessions, you should be able to:
– Use procedures, functions, parameters, and modules (shared VB script files) in ASP
Mark Dixon Page 3
Example: Country (database)ID Name Population Birth rate Death rate Land Mass ContinentID1 UK 60776238 10.67 10.09 241590 12 Spain 40448191 9.98 9.81 499542 13 Germany 82400996 8.2 10.71 349223 14 Egypt 80335036 22.53 5.11 995450 25 Kenya 36913721 38.94 10.95 569250 26 China 1321851888 13.45 7 9326410 3
ID Name1 Europe2 Africa3 Asia4 Australia5 North America6 South 7 Antarctica
Mark Dixon Page 4
Example Country (user interface)
Mark Dixon Page 5
Example: Countries (code v0)
<html> <head><title>Countries</title></head> <body> <div style="background-color: LightGreen; text-align: center;"> <b>Countries of the World</b> </div> <% Const cs = "…" Dim rs As Object rs = CreateObject("ADODB.Recordset") rs.Open("Select * FROM [Country]", cs) Do Until rs.EOF() Response.Write(rs.Fields("Name").value & "<br>") rs.MoveNext() Loop rs.Close() rs = Nothing %> </body></html>
Countries.aspx• HTML and ASP
mixed together– messy
Mark Dixon Page 6
Example: Countries (code v1)
<script language="vbscript" runat="server"> Const cs = "…"
Sub DisplayCountries() Dim rs As Object rs = CreateObject("ADODB.Recordset") rs.Open("Select * FROM [Country]", cs) Do Until rs.EOF() Response.Write(rs.Fields("Name").value & "<br>") rs.MoveNext() Loop rs.Close() rs = Nothing End Sub</script>
<html> <head><title>Countries</title></head> <body> <div style="background-color: LightGreen; text-align: center;"> <b>Countries of the World</b> </div> <%DisplayCountries()%> </body></html>
Countries.aspx• HTML and ASP
separated
Mark Dixon Page 7
Example: Countries (v2)• Add facility to order list:
Mark Dixon Page 8
Example: Countries (code v2)<script language="vbscript" runat="server"> Const cs = "…" Sub DisplayCountries(sql As String) Dim rs As Object rs = CreateObject("ADODB.Recordset") rs.Open("Select * FROM [Country] " & sql, cs) Do Until rs.EOF() Response.Write(rs.Fields("Name").value & "<br>") rs.MoveNext() Loop rs.Close() rs = Nothing End Sub</script>
<html> <head><title>Countries</title></head> <body> <div style="background-color: LightGreen; text-align: center;"> <b>Countries of the World</b> </div> <form action="Countries.aspx" method="post"> <input name="btnOrder" type="submit" value="Order" /> </form> <% If Request.Form("btnOrder") <> "" Then DisplayCountries(" ORDER BY [Name]") Else DisplayCountries("") End If %> </body></html>
Countries.aspx parameters allow same procedure to do different things
file getting long
Mark Dixon Page 9
Adding VB Script file• Right click project
• click 'add new item'
Mark Dixon Page 10
Example: Countries (code v3)
<script language="vbscript" runat="server" src="Countries.vbs" /><html> <head><title>Countries</title></head> <body> <div style="background-color: LightGreen; text-align: center;"> <b>Countries of the World</b> </div> <form action="Countries.aspx" method="post"> <input name="btnOrder" type="submit" value="Order" /> </form> <% If Request.Form("btnOrder") <> "" Then DisplayCountries(" ORDER BY [Name]") Else DisplayCountries("") End If %> </body></html>
Countries.aspx
• split code and html into 2 files
Const cs = "…"
Sub DisplayCountries(sql As String) Dim rs As Object rs = CreateObject("ADODB.Recordset") rs.Open("Select * FROM [Country] " & sql, cs) Do Until rs.EOF() Response.Write(rs.Fields("Name").value & "<br>") rs.MoveNext() Loop rs.Close() rs = NothingEnd Sub
Countries.vbs
Mark Dixon Page 11
Example: People DatabasePersonPersonID
Surname
Forenames
Gender
Phone eMail
1 Dixon Mark Yes 01752 232556
2 Smith John Yes 01752 111111
3 Jones Sally No 01752 888888
4 Bloggs Fred Yes 01752 123123
5 Anderson Genny No 01752 987987
6 Smith Bob Yes 01752 898898
Mark Dixon Page 12
Example: People (design)
Mark Dixon Page 13
Example: People (code v0)
• 2 pages• duplicate same code
<script language="vbscript" runat="server"> Const cs = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\databases\People.mdb;Persist Security Info=False" Const adOpenDynamic = 3
Sub DisplayMenu() Response.Write("<center>") Response.Write("<a href='People.aspx'>People</a> | ") Response.Write("<a href='Person.aspx'>Person</a>") Response.Write("</center><br><br>") End Sub
Function PersonName(ByVal r As Object) As String PersonName = r.Fields("Forenames").Value & " " & r.Fields("Surname").Value End Function</script>
<html> <head><title>People</title></head> <body> <% DisplayMenu Dim rs As Object rs = CreateObject("ADODB.Recordset") rs.Open("Person", cs) Do Until rs.EOF() Response.Write(PersonName(rs) & "<br>") rs.MoveNext() Loop rs.Close() rs = Nothing %> </body></html>
<script language="vbscript" runat="server"> Const cs = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\databases\People.mdb;Persist Security Info=False" Const adOpenDynamic = 3
Sub DisplayMenu() Response.Write("<center>") Response.Write("<a href='People.aspx'>People</a> | ") Response.Write("<a href='Person.aspx'>Person</a>") Response.Write("</center><br><br>") End Sub
Function PersonName(ByVal r As Object) As String PersonName = r.Fields("Forenames").Value & " " & r.Fields("Surname").Value End Function</script> <html> <head><title>Person Page</title></head> <body> <% DisplayMenu Dim rs As Object rs = CreateObject("ADODB.Recordset") rs.Open("Person", cs, adOpenDynamic) If Session("curID") <> "" Then rs.Find("[ID] = " & Session("curID")) If Request.Form("btnPrev") <> "" Then rs.MovePrevious() ElseIf Request.Form("btnNext") <> "" Then rs.MoveNext() End If End If Session("curID") = CStr(rs.Fields("ID").Value) Response.Write(PersonName(rs) & "<br>") rs.Close() rs = Nothing %> <form action="Person.aspx" method="post"> <input name="btnPrev" type="submit" value="Previous" /> <input name="btnNext" type="submit" value="Next" /> </form> </body></html>
Person.aspxPeople.aspx
Mark Dixon Page 14
Example: People (code v1)
<script runat="server" src="_People.vbs"></script>
<html> <head><title>People</title></head> <body> <% DisplayMenu Dim rs As Object rs = CreateObject("ADODB.Recordset") rs.Open("Person", cs) Do Until rs.EOF() Response.Write(PersonName(rs) & "<br>") rs.MoveNext() Loop rs.Close() rs = Nothing %> </body></html>
Const cs = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\People.mdb;Persist Security Info=False"Const adOpenDynamic = 3
Sub DisplayMenu() Response.Write("<center>") Response.Write("<a href='People.aspx'>People</a> ") Response.Write("<a href='Person.aspx'>Person</a>") Response.Write("</center><br><br>")End Sub
Function PersonName(r As Object) As String PersonName = r.Fields("Forenames").Value & " " & r.Fields("Surname").ValueEnd Function
<script runat="server" src="_People.vbs"></script>
<html> <head><title>Person Page</title></head> <body> <% DisplayMenu Dim rs As Object rs = CreateObject("ADODB.Recordset") rs.Open("Person", cs, adOpenDynamic) If Session("curID") <> "" Then rs.Find("[ID] = " & Session("curID")) If Request.Form("btnPrev") <> "" Then rs.MovePrevious() ElseIf Request.Form("btnNext") <> "" Then rs.MoveNext() End If End If Session("curID") = CStr(rs.Fields("ID").Value) Response.Write(PersonName(rs) & "<br>") rs.Close() rs = Nothing %> <form action="Person.aspx" method="post"> <input name="btnPrev" type="submit" value="Previous" /> <input name="btnNext" type="submit" value="Next" /> </form> </body></html>
Person.aspx
People.aspx
_People.vbs
• 2 pages– share same
code
• change one place
Mark Dixon Page 15
Tutorial Exercise: Countries• Task 1: Get the countries example (from the lecture) working.• Task 2: Modify your page to display more information about each
country.• Task 3: Add an unordered button to your page.• Task 4: Add an order by population button to your page
Mark Dixon Page 16
Tutorial Exercise: People• Task 1: Get the people example from the lecture working.• Task 2: Modify your page to display more information about each
person.• Task 3: Modify your page so that the user can order the list of people.
Mark Dixon Page 17
Tutorial Exercise: Assignment• Task 1: Use module (files) and procedures in your assignment.