unit6.2

advertisement
MIS 3200 – Unit 6.2
Learning Objectives
• How to move data between pages
– Using Query Strings
• How to control errors on web pages
– Using Try-catch
Query Strings – What are they?
• Query strings:
– are found at the end of the URL.
fox example:
– can be used to pass data from one page to another
(Any other ways?)
Query String: Characteristics
• Query strings:
– are started with a question mark (?)
– can contain any number of “keys” (i.e. name – value pairs)
– Different Keys which are separated with an ampersand (&)
– Words within the values are separated by a plus sign (+)
http://aspnet.cob.ohio.edu/MIS3200/ASPPUB/MIS3200/Unit6/
Unit6L22.aspx?userName=Shannon+Prescott&subTotal=270.35;
How are query strings created?
• Query strings are manually built by the developer and used with
Response.Redirect
• When this code executes, the user will be sent to the target and will
pass along two keys via the query string:
– userName which is assigned a value of “Shannon Prescott”
– subTotal which is assigned a value of “270.35”
• Begin the page redirection
Response.Redirect(“Unit6L22.aspx”);
• Query strings can be built like any other string you have worked with.
Using concatenation we can construct a query string that will use
values from TextBoxes on a page, for example:
Response.Redirect(“Unit6L22.aspx?UserName=“ + txtName.Text + “&subTotal=“ + lblSubTotal.Text);
• When this code executes, the user will be sent to Unit6L22.aspx and
will pass along two values via the query string:
– So effectively, the key, UserName= txtName.Text
– and the key, subTotal = lblSubTotal.Text
How are query strings read?
• Query strings are typically read on the target pages
• Request.Querystring allows retreieval of the key and its value, for example:
lblName.Text = Request.Querystring[“UserName”].ToString();
• When this code executes, the value assigned to the key will be read from
the query string, converted to string so that it can be placed in the Text
property of a label on our page.
• When reading the query string keys, you must use brackets [] around the
name of the key:
lblWecomeString.Text = “Hello” + Request.Querystring[“UserName”].ToString();
lblWecomeString.Text += “Your sub-total is $“ + Request.Querystring[“SubTotal”].ToString();
• Another example, but this time we have to convert our query string since
we want to perform math on it:
decimal intValue = 0m;
decValue = Convert.ToDecimal(Request.QueryString[“SubTotal”]);
• When this code executes, the value assigned to SubTotal key will be read
from the query string, converted to a decimal, and assigned to decValue.
• Based on the previous slide, the value is 270.35
Error messages!
• What happens if we try to read a key that does not exist?
int intValue = 0m;
intValue = Convert.ToDecimal(Request.QueryString[“key3”]);
• When this code executes, and if key3 does not exist we will get
an error message:
• Why does this happen?
Prevent errors – clever code
• One way to address the problem is to see if the key exists by
using a conditional test:
• When this code executes, and if key3 does not exist,
intValue is still set to 0
Issues with preventing errors
• But, wait! What if key3 exists, but has a value set to cat? The
conditional test will pass, but we will run into an error if we try
to convert “cat” to an integer?
ERROR! >>> “Input string was not in a correct format”
Controlling error messages
with Try – Catch
• Using a Try – Catch statement allows us to “try” to execute
some code and if there is an error (an Exception) it will “catch”
the error and let you decide what to do with it.
Controlling error messages
with Try – Catch #2
• So, in the previous key3 example we could modify the code to
look like this:
Hands On – Unit 6 L22
• Creating and reading query strings
1. Create 2 new files in your Unit 6 folder
lastnameU6L22_1.aspx and lastnameU6L22_2.aspx
2. Update the heading to be
Unit 6 L22_1 – Creating Query Strings (in the 1st file) and
Unit 6 L22_2 – Reading Query Strings (in the 2nd file)
3. In U6L22_1.aspx, add 3 text boxes and a button
a.
Set the button text to Pass the values to the next page
L2.2 #2
4. In the button click method of the Pass the values to the next page
create a query string which passes the values of the 3 text boxes to the
U6L22_2.aspx page
5. In U6L22_2.aspx,
a.
b.
c.
d.
add a label (which will display the contents of the query string)
add a button with the Text set to Change the values and in the button click
method, redirect the user back to the 1st page
When the 2nd page loads, you should display the contents of the all keys
passed in the query string in the label. Additionally, if a key can be converted
into a decimal (e.g. somebody type in 2.0 into one of the text boxes), display a
message that the key is a decimal; otherwise, display a message the key is
NOT a decimal
For an example of what the page should be, see the link below:
http://aspnet.cob.ohiou.edu/mis3200/asppub/MIS3200/Unit6/BobcatU6L22_1.aspx
L2.2 #3
6. Test the L2.2 functionality by typing in 2.0 in the 1st textbox,
dog in the 2nd textbox and 4 into the 3rd textbox
it should look similar to this example:
http://aspnet.cob.ohiou.edu/mis3200/asppub/MIS3200/Unit6/BobcatU6L22_2.aspx?key1=2.0&key2=dog&key3=4
7. Add appropriate comments to explain what the the methods
are doing
8. Create a link to your U6L22_1.aspx page from your MIS3200
page and copy everything to ASPNET and submit your MIS
Portfolio URL to the drop box.
Think About It!
• Why is try – catch critical to usability of
applications?
• When should query strings be used instead of
session variables?
• When should you NOT use query strings?
From this point forward your assignments should
NEVER crash – ALWAYS use try/catch to protect any
code that might crash AND always provide
meaningful messages when an Exception is caught.
Download