Article ID: 930739 - Last Review: August 22, 2007 - Revision: 2.9

MCTS Self-Paced Training Kit (Exam 70-528): Microsoft .NET Framework 2.0 Web-Based Client Development Comments and Corrections

On This Page

SUMMARY

This article contains comments, corrections, and information about known errors relating to the Microsoft Press book MCTS Self-Paced Training Kit (Exam 70-528): Microsoft .NET Framework 2.0 Web-Based Client Development, 978-0-7356-2334-7.

The following topics are covered:

  • Test Question: 528P_5.2.5_01 Marks correct answer as incorrect
  • Test Question: Answer to Nested master file question is incorrect
  • CD-ROM: Incorrect answer marked correct in assessment question
  • Page 77: "Write" should be "WriteLine"
  • Page 98: Label can also be rendered as a <label> tag
  • Page 102: Incorrect title in Figure 3-3
  • Page 112: HotSpot should be ImageMap
  • Page 136: Control class needs to be replaced with CompositeControl class
  • Page 149: Label2 should be changed to Label1
  • Page 159: Incorrect class used
  • Page 160: Method used instead of event
  • Page 162 and 163: Incorrect property used in code example
  • Page 173: Incorrect description of Figure 3-33
  • Page 173: UpperAlpha used in place of UpperRoman
  • Page 186: Incorrect class used in Summary
  • Page 207: Definition of MenuItemBinding object incorrect
  • Page 207: "nodes" should be "items"
  • Pages 214-215: Update customer ID code needs to be removed
  • Page 216: "upper-left" should be "upper-right"
  • Page 217: "upper-left" should be "upper-right"
  • Page 219: AdServer should be AdRotator
  • Pages 233-234: LoadOption values are obsolete and incorrect
  • Page 255: Phrase "retrieves the populated DataSet," repeated incorrectly
  • Page 274: AddSchemaWithKey should be replaced with AddWithKey
  • Page 274: AddWithPrimaryKey should be replaced with AddWithKey
  • Page 305: PreserveCurrentValues should be replaced with PreserveChanges
  • Page 306: The word "connections" should be replaced with "commands"
  • Page 324: RaiseError should be RaisError
  • Page 351: XmlTextWrite should be replaced with XmlTextReader
  • Page 351: DocumentNavigator should be XPathNavigator
  • Page 362: SelectSingleNode should be GetElementByID
  • Page 364: SelectElementsByTagName should be changed to GetElementsByTagName
  • Page 380: "Hi" should be "this test"
  • Page 384: "access" should be "support for"
  • Page 451: class should be public class
  • Pages 452-453: C# should be VB and vice versa
  • Page 473: does should be does not
  • Page 476: "to" should be "of"
  • Page 477: Figure 6-4 is incorrect and should be disregarded
  • Page 483: "if" should be replaced with "of"
  • Page 483: NavigateTest3.aspx should be NavigateTest2.aspx
  • Page 513: Semicolon missing from code sample
  • Page 529: Incorrect practice step
  • Page 548: Invalid method referenced
  • Page 551: The file extension .axd is incorrectly printed twice
  • Page 565: Incorrect description of the Page.Request object
  • Page 576: Case Scenario explanation is incorrect
  • Page 593: "master=" used in place of "MasterPageFile="
  • Page 632: "ButtonWebPart" should be "ButtonControl" and "CalendarWebPart" should be "CalendarControl"
  • Page 633: InitComplete should be GenerateModeList
  • Page 660: Incorrect brackets used in C# code sample
  • Page 687: AddUsersToRoles incorrectly listed twice
  • Page 694: "Login" should be "ChangePassword"
  • Page 783: Incorrect instructions given
  • Page 808: five should be ten
  • Page 820: Review question incorrect
  • Page 833: Incorrect explanation of answer 2D

MORE INFORMATION

Test Question: 528P_5.2.5_01 Marks correct answer as incorrect

On the Readiness Review assessment, test question 528P_5.2.5_01 indicates that answer 2 is correct. The correct answer is 4.

To make a skin optional, define a SkinID property. Named skins do not automatically apply to controls by type. Instead, you explicitly apply a named skin to a control by setting the control's SkinID property. Creating named skins allows you to set different skins for different instances of the same control in an application.

Test Question: Answer to Nested master file question is incorrect

On the Readiness Review assessment, the answer to the following question is incorrect:

Which of the following is a valid declaration for a nested master file?

The answer reads:

<%@ Master Language="VB" master="Blue.master"%>

It should read:

<%@ Master Language="VB" MasterPageFile="Blue.master"%>


CD-ROM: Incorrect answer marked correct in assessment question

In the practice exam on the companion CD, one of the questions is scored incorrectly. The question reads:
"You and a group of developers are creating an ASP.NET Web site. You want to give developers the option to apply a skin to Button controls, but you do NOT want the skin applied automatically.

Which of the following skin files does this correctly?"

The answer marked correct reads:
<asp:Button runat="server"
  BackColor="lightblue"
  ForeColor="black" />

The answer that should be marked correct reads:
<asp:Button runat="server"
  SkinID="MySkin"
  BackColor="lightblue"
  ForeColor="black" />

Page 77: "Write" should be "WriteLine"

On page 77, the code box under Sub-Step C of Step 4 contains a partialliy incorrect line of code.

Change:
System.Diagnostics.Debug.Write("HandlerName")

To:
System.Diagnostics.Debug.WriteLine("HandlerName")

Page 98: Label can also be rendered as a <label> tag

On page 98, the second to the last sentence of the second paragraph reads:

"The Literal control does not provide substantial functionality and does not add any HTML elementrs to the Web page where the Label is rendered as a <span> tag."

It should read:

"The Literal control does not provide substantial functionality and does not add any HTML elementrs to the Web page where the Label is rendered as a <span> or a <label> tag."

Page 102: Incorrect title in Figure 3-3

On page 102, the title of the rightmost diagram in Figure 303 reads:

"Table"

It should read:

"TableCell"

Page 112: HotSpot should be ImageMap

On page 112, the 4th sentence in the "Understanding the HotSpotMode Property" paragraph contains an incorrect control.

Change:
"This means that you can specify the HotSpotMode on the ImageMap control to set a default HotSpot behavior, but the HotSpotMode of the HotSpot must be set to NotSet to inherit the behavior from the HotSpot."

To:
"This means that you can specify the HotSpotMode on the ImageMap control to set a default HotSpot behavior, but the HotSpotMode of the HotSpot must be set to NotSet to inherit the behavior from the ImageMap."

Page 136: Control class needs to be replaced with CompositeControl class

On page 136, the first sentence of the second to the last paragraph reads:

"The Wizard control inherits from the Control class, and the BaseWizardStep inherits from View, as shows in Figure 3-20."

It should read:

"The Wizard control inherits from the CompositeControl class, and the BaseWizardStep inherits from View, as shows in Figure 3-20."

Page 149: Label2 should be changed to Label1

On page 149, the second sentence of step 3 reads:

"Add code to this method that places the PostBackValue into Label2."

It should read:

"Add code to this method that places the PostBackValue into Label1."

Page 159: Incorrect class used

Page 159, the first sentence under Figure 3-25 reads:

"The DataBoundControl class has a method called DataBind."

It should read:

"The BaseDataBoundControl class has a method called DataBind."

Page 160: Method used instead of event

On page 160, the last sentence of the first paragraph reads:

"The data-bound control automatically connects to the data source control at run time by calling the DataBind method on this control, which also raises the DataBound method."

It should read:

"The data-bound control automatically connects to the data source control at run time by calling the DataBind method on this control, which also raises the DataBound event."

Page 162 and 163: Incorrect property used in code example

On pages 162, the second code example at the bottom of the page reads:

<%# Eval("Vin", "{0:C}" ) %>

It should read:

<%# Eval("Price", "{0:C}" ) %>

On page 163, the second code example at the top of the page reads:

<%# Bind("Vin", "{0:C}" ) %>

It should read:

<%# Bind("Price", "{0:C}" ) %>


Page 173: Incorrect description of Figure 3-33

On page 173, the paragraph immediately preceeding Figure 3-33 is incorrect and should be disregarded.

Page 173: UpperAlpha used in place of UpperRoman

On page 173, the first sentence of the last paragraph reads:

"If the BulletList control is set to render numbers, you can set the BulletStyle to LowerAlpha, UpperAlpha, LowerRoman, and UpperAlpha fields."

It should read:

"If the BulletList control is set to render numbers, you can set the BulletStyle to LowerAlpha, UpperAlpha, LowerRoman, and UpperRoman fields."

Page 186: Incorrect class used in Summary

On page 186, in the C# code example, the 5th line from the bottom of the page reads:

/// Summary description for EmployeeList


It should read:

/// Summary description for CarList


Page 207: Definition of MenuItemBinding object incorrect

On page 207, the first sentence of the last paragraph contains an incorrect definition for MenuItemBinding.

Change:
"The Menu control contains a DataBindings property that is a collection of MenuItemBinding objects that define the binding between data items and TreeNodes."

To:
"The Menu control contains a DataBindings property that is a collection of MenuItemBinding objects that define the binding between a data item and the menu item it is binding to in a Menu control."

Page 207: "nodes" should be "items"

On page 207, the second sentence of the last paragraph needs to have "nodes" changed to "items".

Change:
"You can specify the criteria for binding and the data item properties to display in the nodes."

To:
"You can specify the criteria for binding and the data item properties to display in the items."

Pages 214-215: Update customer ID code needs to be removed

On pages 214 & 215, a line of code that is used to update the customer ID needs to be removed.

Delete the following line from the VB code (line 21):
customerFound.Id = updateCustomer.Id

Delete the following line from the C# code (line 34):
customerFound.Id = updateCustomer.Id;


Page 216: "upper-left" should be "upper-right"

On page 216, the first sentence in step 4 uses an incorrect side to display the Tasks window.

Change:
"4. Click the symbol in the upper-left corner of the ObjectDataSource1 control to display the ObjectDataSource Tasks window."

To:
"4. Click the symbol in the upper-right corner of the ObjectDataSource1 control to display the ObjectDataSource Tasks window."

Page 217: "upper-left" should be "upper-right"

On page 217, Steps 10 and 16 contain incorrect references to where a symbol is in a control.

Change:
"10. Click the symbol in the upper-left corner of the GridView control to display the GridView Tasks window. Choose ObjectDataSource1 as the Data Source."

To:
"10. Click the symbol in the upper-right corner of the GridView control to display the GridView Tasks window. Choose ObjectDataSource1 as the Data Source."

Change:
"16. Click the symbol in the upper-left corner of the DetailsView control to display the DetailsView Tasks window. Choose ObjectDataSource2 as the Data Source."

To:
"16. Click the symbol in the upper-right corner of the DetailsView control to display the DetailsView Tasks window. Choose ObjectDataSource2 as the Data Source."

Page 219: AdServer should be AdRotator

On page 219, the control in Answer C to Question 1 is incorrect.

Change:
"C. Use the AdServer control and create an XML file with configuration of the control."

To:
"C. Use the AdRotator control and create an XML file with configuration of the control."

Pages 233-234: LoadOption values are obsolete and incorrect

On pages 233-234, the values in the two bullet points on page 233 and the bullet point on page 234 reads:

"OverwriteRow Overwrites the original DataRowVersion and the current DataRowVersion and changes the RowState to Unchanged. New rows also have the RowState of Unchanged.

PreserveCurrentValues (default) Overwrites the original DataRowVersion, but does not modify the current DataRowVersion. New rows have the RowState of Unchanged as well.

UpdateCurrentValues Overwrites the current DataRowVersion, but does not modify the the original DataRowVersion. New rows have the RowState of Added. Rows that had a RowState of Unchanged have the RowState of Unchanged if the current DataRowVersion is the same as the original DataRowVersion, but if they are different, the RowState is Modified."

They should read:

"OverwriteChanges Overwrites the original DataRowVersion and the current DataRowVersion and changes the RowState to Unchanged. New rows also have the RowState of Unchanged.

PreserveChanges (default) Overwrites the original DataRowVersion, but does not modify the current DataRowVersion. New rows have the RowState of Unchanged as well.

Upsert Overwrites the current DataRowVersion, but does not modify the the original DataRowVersion. New rows have the RowState of Added. Rows that had a RowState of Unchanged have the RowState of Unchanged if the current DataRowVersion is the same as the original DataRowVersion, but if they are different, the RowState is Modified."

Page 255: Phrase "retrieves the populated DataSet," repeated incorrectly

On page 255, the last sentence of the paragraph under the heading "Binding to the DataSet Object" reads:

"The code sample retrieves the populated DataSet, retrieves the populated DataSet, and binds the DataSet to the GridView controls:"

It should read:

"The code sample retrieves the populated DataSet and binds the DataSet to the GridView controls:"

Page 274: AddSchemaWithKey should be replaced with AddWithKey

On page 274, the 5th sentence of the first paragraph reads:

"The AddSchemaWithKey is selected, which means that if a new DataTable is added to the copy DataSet object, the new DataTable and its data are added to the original DataSet object."

It should read:

"The AddWithKey is selected, which means that if a new DataTable is added to the copy DataSet object, the new DataTable and its data are added to the original DataSet object."

Page 274: AddWithPrimaryKey should be replaced with AddWithKey

On page 274, the second bullet point reads:

"AddWithPrimaryKey Adds the necessary DataTable, DataColumn, and PrimaryKey objects to complete the schema."

It should read:

"AddWithKey Adds the necessary DataTable, DataColumn, and PrimaryKey objects to complete the schema."

Page 305: PreserveCurrentValues should be replaced with PreserveChanges

On page 305, the first sentence of the first paragraph reads:

"One option is to load the DataTable object again, using the default PreserveCurrentValues enumeration value, which loads the original DataRowVersion with the data from the database while leaving the current DataRowVersion untouched."

It should read:

"One option is to load the DataTable object again, using the default PreserveChanges enumeration value, which loads the original DataRowVersion with the data from the database while leaving the current DataRowVersion untouched."

Page 306: The word "connections" should be replaced with "commands"

On page 306, the last sentence of the second paragraph reads:

"A MARS solution is to simply create two connections: one for the author list and one for the total of royalties query."

It should read:

"A MARS solution is to simply create two commands: one for the author list and one for the total of royalties query."

Page 324: RaiseError should be RaisError

On page 324, the second sentence of the "Detecting Information with the Connection Event" section refers to RaiseError instead of RaisError.

Change:
"You can use the InfoMessage event to view the results of SQL Print statements and any messages that are available as a result of the SQL RaiseError statement, regardless of the error level."

To:
"You can use the InfoMessage event to view the results of SQL Print statements and any messages that are available as a result of the SQL RaisError statement, regardless of the error level."

Page 351: XmlTextWrite should be replaced with XmlTextReader

On page 351, the first sentence of the XmlTextReader definition reads:

"The XmlTextWrite provides non-cached, forward-only access to XML data."

It should read:

"The XmlTextReader provides non-cached, forward-only access to XML data."

Page 351: DocumentNavigator should be XPathNavigator

On page 351, the first sentence of the "XPathNavigator" section refers to DocumentNavigator rather than XPathNavigator.

Change:
"The DocumentNavigator provides efficient navigation of an XmlDocument by providing XPath support for navigation."

To:
"The XPathNavigator provides efficient navigation of an XmlDocument by providing XPath support for navigation."

Page 362: SelectSingleNode should be GetElementByID

On page 362, in the first sentence after the code sample, the second reference to SelectSingleNode should be GetElementByID.

Change:
"The SelectSingleNode method does not require a DTD to be provided and can perform an XPath lookup on any element or attribute where the SelectSingleNode requires an ID data type and a DTD."

To:
"The SelectSingleNode method does not require a DTD to be provided and can perform an XPath lookup on any element or attribute where the GetElementByID requires an ID data type and a DTD."

Page 364: SelectElementsByTagName should be changed to GetElementsByTagName

On page 364, the last sentence on the page reads:

"Note that this method can perform an XPath lookup on any element or attribute, with much more querying flexibility; whereas, the SelectElementsByTagName is limited to a tag name."

It should read:

"Note that this method can perform an XPath lookup on any element or attribute, with much more querying flexibility; whereas, the GetElementsByTagName is limited to a tag name."

Page 380: "Hi" should be "this test"

On page 380, the first sentence of the 2nd paragraph contains an incorrect word.

Change:
"The DTD states that the myGrandChild element must be empty, but one of the myGrandChild elements of myChild ref-1 has a myGrandChild element containing the word Hi."

To:
"The DTD states that the myGrandChild element must be empty, but one of the myGrandChild elements of myChild ref-2 has a myGrandChild element containing the words this test."

Page 384: "access" should be "support for"

On page 384, the third bullet under Chapter Summary is incorreclty worded.

Change:
"ADO.NET provides access XML files using the classes in the System.Xml namespace."

To:
"ADO.NET provides support for XML files using the classes in the System.Xml namespace."

Page 451: class should be public class

On page 451, the 9th line creates a class rather than a public class.

Change:
class StateControl : DropDownList

To:
public class StateControl : DropDownList

Pages 452-453: C# should be VB and vice versa

On page 452, the first line of the VB code sample for step 4 is incorrect.

Change:
<%@ Page Language="C#" AutoEventWireup="true"

To:
<%@ Page Language="VB" AutoEventWireup="true"

On page 453, the first line of the C# code sample for step 4 is incorrect.

Change:
<%@ Page Language="VB" AutoEventWireup="false"

To:
<%@ Page Language="C#" AutoEventWireup="true"

Page 473: does should be does not

On page 473, the first sentence of the second paragraph is incorrect.

Change:
"Note that, when using the CustomValidator, the server-side validation does need to provide the same validation at the client-side validation."

To:
"Note that, when using the CustomValidator, the server-side validation does not need to provide the same validation at the client-side validation."

Page 476: "to" should be "of"

On page 476, Step 5 contains an incorrect word.

Change:
"5. Set the TextMode property to txtPassword and txtConfirm to Password."

To:
"5. Set the TextMode property of txtPassword and txtConfirm to Password."

Page 477: Figure 6-4 is incorrect and should be disregarded

On page 477, Figure 6-4 is a copy of Figure 4-4 on page 241 and should be disregarded.

Page 483: "if" should be replaced with "of"

On page 483, the last sentence of the last paragraph reads:

"The NavigateTest3.aspx page contains a Label control called lbl-Data that is populated with the data from txtData if NavigateTest3.aspx, which was called by using a cross-page PostBack, as shown in the following example:"

It should read:

"The NavigateTest3.aspx page contains a Label control called lbl-Data that is populated with the data from txtData of NavigateTest3.aspx, which was called by using a cross-page PostBack, as shown in the following example:"

Page 483: NavigateTest3.aspx should be NavigateTest2.aspx

On page 483, the last sentence references NavigateTest3.aspx in place of NavigateTest2.aspx.

Change:
"The NavigateTest3.aspx page contains a Label control called lblData that is populated with the data from txtData of NavigateTest3.aspx, which was called by using a cross-page PostBack, as shown in the following example:"

To:
"The NavigateTest3.aspx page contains a Label control called lblData that is populated with the data from txtData of NavigateTest2.aspx, which was called by using a cross-page PostBack, as shown in the following example:"

Page 513: Semicolon missing from code sample

On page 513, the last line is missing a semicolon.

Change:
Label1.Text = "HiddenField clicks: " + HiddenField1.Value

To:
Label1.Text = "HiddenField clicks: " + HiddenField1.Value;

Page 529: Incorrect practice step

On page 529, step 3 of exercise 2 contains incorrect information.

Change:
"In the Page_Load method for both Default.aspx and Default2.aspx, add code to increment the number of clicks in the Session object. Don’t forget to lock the application object before updating the value. Then display the value in Label2. The following code demonstrates how to do this:
'VB
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles
Me.Load
Session("clicks") = CInt(Session("clicks")) + 1
Label2.Text = "Session clicks: " + Session("clicks").ToString
End Sub

//C#
Session["clicks"] = ((int)Session["clicks"]) + 1;
Label2.Text = "Session clicks: " + Session["clicks"].ToString();

Notice that HiddenField.Value is a String, which requires converting data to and from the String type. This makes it less convenient than other methods of storing data."

To:
"In the Page_Load method for both Default.aspx and Default2.aspx, add code to increment the number of clicks in the Session object. Then display the value in Label2. The following code demonstrates how to do this:
'VB
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles
Me.Load
Session("clicks") = CInt(Session("clicks")) + 1
Label2.Text = "Session clicks: " + Session("clicks").ToString
End Sub

//C#
Session["clicks"] = ((int)Session["clicks"]) + 1;
Label2.Text = "Session clicks: " + Session["clicks"].ToString();
"

Page 548: Invalid method referenced

On page 548, the fist method referenced in Step 2 uses the word "Being" and should use "Begin".

Change:
"2. Create events to start and end your asynchronous code that implements System.Web.IHttpAsyncHandler.BeingProcessRequest and System.Web.IHttpAsyncHandler.EndProcessRequest."

To:
"2. Create events to start and end your asynchronous code that implements System.Web.IHttpAsyncHandler.BeginProcessRequest and System.Web.IHttpAsyncHandler.EndProcessRequest."

Page 551: The file extension .axd is incorrectly printed twice

On page 551, the second sentence of the first paragraph contains two references to the axd file extenion, the second reference needs to be removed and two additional extensions needs to be added.

Change:
"For example, IIS passes requests for .aspx, .axd, and .axd to the Aspnet_Isapi.dll file that performs the ASP.NET processing."

To:
"For example, IIS passes requests for .aspx, .axd, .ascx, and .asmx to the Aspnet_Isapi.dll file that performs the ASP.NET processing."

Page 565: Incorrect description of the Page.Request object

On page 565, the first sentence of the "Request" section is incorrect.

Change:
"The Page.Request property is an HttpRequest object that allows you to add data to the HTTP response being sent back to the client who requested a Web page."

To:
"The Page.Request property is an HttpRequest object that provides access to information that is part of the current page request as sent from the Web browser."

Page 576: Case Scenario explanation is incorrect

On page 576, the first sentence under the Case Scenario heading refers to searlization when the Chapter was about programming web applications.

Change:
"In the following case scenarios, you will apply what you’ve learned about how to implement and apply serialization, as well as how to upgrade applications that make use of serialization."

To:
"In the following case scenarios, you will apply what you’ve learned about how to program web applications."

Page 593: "master=" used in place of "MasterPageFile="

On page 593, the first line in the VB and C# code reads:

'VB
<%@ Master Language="VB" master="Parent.master"%>

//C#
<%@ Master Language="C#" master="Parent.master"%>

They should read:

'VB
<%@ Master Language="VB" MasterPageFile="Parent.master"%>

//C#
<%@ Master Language="C#" MasterPageFile="Parent.master"%>


Page 632: "ButtonWebPart" should be "ButtonControl" and "CalendarWebPart" should be "CalendarControl"

On page 632, the fist sentence of Step 5 uses an incorrect name for two Web User controls.

Change:
"5. Now add two new Web User controls to your Web site named CalendarWebPart and ButtonWebPart."

To:
"5. Now add two new Web User controls to your Web site named CalendarControl and ButtonControl."

Page 633: InitComplete should be GenerateModeList

On page 633, Step 4 contains an incorrect method in the VB and C# code samples.

Change:
'VB
Sub Page_Init(ByVal sender As Object, ByVal e As EventArgs)
AddHandler Page.InitComplete, AddressOf InitComplete
End Sub

//C#
void Page_Init(object sender, EventArgs e)
{
Page.InitComplete += new EventHandler(InitComplete);
}

To:
'VB
Sub Page_Init(ByVal sender As Object, ByVal e As EventArgs)
AddHandler Page.InitComplete, AddressOf GenerateModeList
End Sub

//C#
void Page_Init(object sender, EventArgs e)
{
Page.InitComplete += new EventHandler(GenerateModeList);
}

Page 660: Incorrect brackets used in C# code sample

On page 660, the 7th line down in the C# code reads:

Culture = Request.Form("DropDownList1");

It should read:

Culture = Request.Form["DropDownList1"];


Page 687: AddUsersToRoles incorrectly listed twice

On page 687, the first bullet point under the Note box reads:

"AddUserToRole, AddUsersToRoles, AddUsersToRole, and AddUsersToRoles Adds a user to a role"

It should read:

"AddUserToRole, AddUsersToRoles, and AddUsersToRole Adds a user to a role"

Page 694: "Login" should be "ChangePassword"

On page 694, the last sentence in the first Step 3 contains an incorrect control.

Change:
"Invalid credential errors are displayed in the Login control itself, and not the ValidationSummary control, however."

To:
"Invalid credential errors are displayed in the ChangePassword control itself, and not the the ValidationSummary control, however."

Page 783: Incorrect instructions given

On page 783, the second and third sentences of step 2 of exercise 2 are incorrect.

Change:
"Click OK. Then click Close."

To:
"Click Yes. Then close the resulting browser window."

Page 808: five should be ten

On page 808, the last sentence of the second paragraph refers to five minutes instead of ten minutes.

Change:
"This example shows you how to keep an object in cache for five minutes after the last request:"

To:
"This example shows you how to keep an object in cache for ten minutes after the last request:"

Page 820: Review question incorrect

On page 820, Review question 4 is a repeat of question 4 on page 804, and should be disregarded.

Page 833: Incorrect explanation of answer 2D

On page 833, answer 2D is incorrect.

Change:
"Incorrect: The ImageButton is not appropriate for this function."

To:
"Incorrect: The FormView only shows one record at a time."

Microsoft Press is committed to providing informative and accurate books. All comments and corrections listed above are ready for inclusion in future printings of this book. If you have a later printing of this book, it may already contain most or all of the above corrections.

Keywords: 
KB930739

Note: This article is from Microsoft Knowledage Base


How we have helped PC users like you

In the News: Read More In ...

Related problems posted by other users

more...