advertisement
Premier Club Log In/Registration
  Include Code  Search Tips
TODAY'S HEADLINES  |   ARTICLE ARCHIVE  |   SKILLBUILDING  |   TIP BANK  |   SOURCEBANK  |   FORUMS  |   NEWSLETTERS
Browse DevX
Partners & Affiliates
advertisement
advertisement
Tip of the Day
Average Rating: 3/5 | Rate this item | 1 user has rated this item.
Tip formerly from VB2TheMax
Expertise: Intermediate
Language: VB7
May 25, 2002
Don't preserve viewstate when doing a Server.Transfer
The ASP.NET version of the Server.Transfer method accepts a second argument which, if true, causes the query string and all the form's fields to be transferred and made available to the destination page. However, when the destination page executes, the following error is likely to be generated:

The View State is invalid for this page and might be corrupted 
The reason for this error is that the EnableViewStateMac attribute of the element of Web.config is set to true by default. This causes a message authentication check (MAC) on the view state of the page being posted back. The view state is held in the __VIEWSTATE hidden field, and the MAC fails because the MAC only checks each page. In other words, the view state of the page where Server.Transfer is called isn't valid on the destination page. This problem is discussed more estensively on the KB article mentioned at the bottom of this page.

You avoid this problem by not passing True as the second argument of the Server.Transfer method. However, you must devise alternative ways to make the query string and controls' values of the source page available to the destination page, if these values must be processed by the destination page. There are two ways to achive this. The easiest way is to make all controls on the source page public, as in:


Public Class WebForm1
    Public WithEvents txtUserName As System.Web.UI.WebControls.TextBox
    ' ...
End Class
A safer way is to wrap these control's values in properties:

Public Class WebForm1
    Private WithEvents txtUserName As System.Web.UI.WebControls.TextBox
    ' ...

    ReadOnly Property UserName() As String
        Get
            Return Me.txtUserName.Text
        End Get
    End Property
End Class
In both cases you can then access the actual value from the destination page as follows:

' inside the destination page
Dim sourcePage As WebPage1 = DirectCast(Context.Handler, WebForm1)
Dim userName As String = sourcePage.UserName
Francesco Balena
If you have a hot tip and we publish it, we'll pay you. However, due to accounting overhead we no longer pay $10 for a single tip submission. You must accumulate 10 acceptable tips to receive payment. Be sure to include a clear explanation of what the technique does and why it's useful. If it includes code, limit it to 20 lines if possible. Submit your tip here.
Please rate this item (5=best)
 1  2  3  4  5
advertisement
advertisement
Advertising Info  |   Member Services  |   Permissions  |   Contact Us  |   Help  |   Feedback  |   Site Map  |   Network Map  |   About

internet.commediabistro.comJusttechjobs.comGraphics.com

Search:

WebMediaBrands Corporate Info

Legal Notices, Licensing, Permissions, Privacy Policy.
Advertise | Newsletters | Shopping | E-mail Offers | Freelance Jobs