beginner's guide to view state - codeproject
DESCRIPTION
helps new folks get around the basics of viewstate.TRANSCRIPT
9,813,751 members (34,266 online) 621 Sign out
Okey Ikechuwu
home quick answers discussions features community
helpwhat is a viewstate in asp.net ?
Articles » Web Development » ASP.NET » General
Article
Browse Code
Stats
Revisions
Alternatives
Comments &
Discussions (122)
Add your own
alternative version
About Article
This article is a step by step
guide to view state with
details
Type Article
Licence CPOL
First Posted 29 Nov 2008
Views 192,991
Bookmarked 275 times
WinXP Win2003 C#
ASP.NET Architect Dev ,
+
Next
Beginner's Guide To View StateBy Abhijit Jana, 29 Nov 2008
Prize winner in Competition "Best ASP.NET article of November 2008"
Table of Contents
Introduction
What is state management ?
Different types of state management?
What is view state ?
Advantages of view state ?
Disadvantages of view state ?
When we should use view state ?
When we should avoid view state?
Where is view state stored ?
How to store object in view state ?
How to trace your view state information?
Enabling and Disabling View State
How to make view state secure?
Some Important Points
Introduction
First of all I want to thank Sean Ewington for his great initiative to write Beginner's Walk for Web
Development article. I have decided to write some articles on state management There are a few article
on Code project on State Management, basically on Session, Caching, Cookies, etc. Though all are very
good article, still I have planned for write some article on state management. and I believe that should
definitely helps to all the Beginners. And I have organized the content in a way that it would be helpful
to not only beginners also to advance user also.
In this article, I will cover the fundamentals of State Management and Details of View State.
What is state management?
Web is Stateless. It means a new instance of the web page class is re-created each time the page is
posted to the server. As we all know HTTP is a stateless protocol, its can't holds the client information
on page. As for example , if we enter a text and client on submit button, text does not appear after
post back , only because of page is recreated on its round trip.
4.80 (144 votes)
articles
Beginner's Guide To View State - CodeProject http://www.codeproject.com/Articles/31344/Beginner-s-Guide-To-View-...
1 of 10 4/17/2013 4:04 PM
Top News
A Tour of C++ Component
Extensions
Get the Insider News free each
morning.
Related Articles
ViewState: Various ways to
reduce performance overhead
Automatic ViewState Properties
with the ViewState attribute
DataGrid's ViewState
optimization
ViewState and Server.Transfer
Best practices
Save ViewState on the File
System
ViewState Compression
Keep ASP.NET ViewState out of
ASPX Page for Performance
Improvement
ASP.NET Internals: Viewstate
and Page Life Cycle
Access ViewState Across Pages
Extend Repeater to support
DataPager
ViewState in Dynamic Control
GridView needs more plumbing
code to support Calendar
controls
Sorting a GridView bound to a
DataTable
Retaining State for Dynamically
Created Controls in ASP.NET
applications
ViewState and Postback
How to make ViewState secure
in ASP.NET
Yet, another ViewState viewer
Help! My ViewState Is Out Of
Control
Record Navigation using Events
in c#
Web Paging Control
Pfz.Caching - ViewIds instead of
ViewStates
As given in above pages, page is recreated before its comes to clients and happened for each and
every request. So it is a big issue to maintain the state of the page and information for a web
application. That is the reason to start concept of State Management. To overcome this problem
ASP.NET 2.0 Provides some features like View State, Cookies, Session, Application
objects etc. to manage the state of page.
There are some few selection criteria to selected proper way to maintain the state, as there are many
way to do that. Those criteria are:
How much information do you need to store?
Does the client accept persistent or in-memory cookies?
Do you want to store the information on the client or on the server?
Is the information sensitive?
What performance and bandwidth criteria do you have for your application?
What are the capabilities of the browsers and devices that you are targeting?
Do you need to store information per user?
How long do you need to store the information?
Do you have a Web farm (multiple servers), a Web garden (multiple processes on one machine),
or a single process that serves the application?
So, when ever you start to think about state management, you should think about above criteria. based
on that you can choose the best approaches for manages state for your web application.
Different types of state management?
There are two different types of state management:
Client Side State Management
View State
Hidden Field
Cookies
Control State
1.
Server Side State Management
Session
Application Object
Caching
Database
2.
Client Side state management does not use any server resource , it store information using client side
option. Server Side state management use server side resource for store data. Selection of client side
and server side state management should be based on your requirements and the selection criteria that
are already given.
What is view state?
View State is one of the most important and useful client side state management mechanism. It can
store the page value at the time of post back (Sending and Receiving information from
Server) of your page. ASP.NET pages provide the ViewState property as a built-in structure for
automatically storing values between multiple requests for the same page.
Example:
Beginner's Guide To View State - CodeProject http://www.codeproject.com/Articles/31344/Beginner-s-Guide-To-View-...
2 of 10 4/17/2013 4:04 PM
If you want to add one variable in View State,
Collapse | Copy Code
ViewState["Var"]=Count;
For Retrieving information from View State
Collapse | Copy Code
string Test=ViewState["TestVal"];
Sometimes you may need to typecast ViewState Value to retreive. As I give an Example to strore and
retreive object in view state in the last of this article.
Advantages of view state?
This are the main advantage of using View State:
Easy to implement
No server resources are required
Enhanced security features ,like it can be encoded and compressed.
Disadvantages of view state?
This are the main disadvantages of using View State:
It can be performance overhead if we are going to store larger amount of data , because it is
associated with page only.
Its stored in a hidden filed in hashed format (which I have discussed later) still it can be easily
trapped.
It does not have any support on mobile devices.
When we should use view state?
I already describe the criteria of selecting State management. A few point you should remember when
you select view state for maintain your page state.
Size of data should be small , because data are bind with page controls , so for larger amount of
data it can be cause of performance overhead.
Try to avoid storing secure data in view state
When we should avoid view state?
You won't need view state for a control for following cases,
Beginner's Guide To View State - CodeProject http://www.codeproject.com/Articles/31344/Beginner-s-Guide-To-View-...
3 of 10 4/17/2013 4:04 PM
The control never change
The control is repopulated on every postback
The control is an input control and it changes only of user actions.
Where is view state stored?
View State stored the value of page controls as a string which is hashed and encoded in some hashing
and encoding technology. It only contain information about page and its controls. Its does not have
any interaction with server. It stays along with the page in the Client Browser. View State use Hidden
field to store its information in a encoding format.
Suppose you have written a simple code , to store a value of control:
Collapse | Copy Code
ViewState["Value"] = MyControl.Text;
Now, Run you application, In Browser, RighClick > View Source , You will get the following section
of code
Fig : View state stored in hidden field
Now , look at the value. looks likes a encrypted string, This is Base64 Encoded string, this is not a
encoded string. So it can easily be decoded. Base64 makes a string suitable for HTTP transfer plus it
makes it a little hard to read . Read More about Base64 Encoding . Any body can decode that string
and read the original value. so be careful about that. There is a security lack of view state.
How to store object in view state?
We can store an object easily as we can store string or integer type variable. But what we need ? we
need to convert it into stream of byte. because as I already said , view state store information in hidden
filed in the page. So we need to use Serialization. If object which we are trying to store in view
state ,are not serializable , then we will get a error message .
Just take as example,
Collapse | Copy Code
//Create a simple class and make it as Serializable
[Serializable]
public class student
{
public int Roll;
public string Name;
public void AddStudent(int intRoll,int strName)
{
this.Roll=intRoll;
this.Name=strName;
}
}
Now we will try to store object of "Student" Class in a view state.
Collapse | Copy Code
//Store Student Class in View State
student _objStudent = new student();
_objStudent.AddStudent(2, "Abhijit");
ViewState["StudentObject"] = _objStudent;
//Retrieve Student information view state
student _objStudent;
_objStudent = (student)ViewState["StudentObject"];
Beginner's Guide To View State - CodeProject http://www.codeproject.com/Articles/31344/Beginner-s-Guide-To-View-...
4 of 10 4/17/2013 4:04 PM
How to trace your view state information?
If you want to trace your view state information, by just enable "Trace" option of Page Directive
Now Run your web application, You can view the details of View State Size along with control ID in
Control Tree Section. Don't worry about "Render Size Byte" , this only the size of rendered
control.
Fig : View State Details
Enabling and Disabling View State
You can enable and disable View state for a single control as well as at page level also. To turnoff view
state for a single control , set EnableViewState Property of that control to false. e.g.:
Collapse | Copy Code
TextBox1.EnableViewState =false;
To turnoff the view state of entire page, we need to set EnableViewState to false of Page Directive as
shown bellow.
Even you disable view state for the entire page , you will see the hidden view state tag with a small
amount of information, ASP.NET always store the controls hierarchy for the page at minimum , even if
view state is disabled.
For enabling the same, you have to use the same property just set them as True
as for example, for a single control we can enabled view state in following way,
Collapse | Copy Code
TextBox1.EnableViewState =true;
and for a page level,
How to make view state secure?
As I already discuss View state information is stored in a hidden filed in a form of Base64 Encoding
String, and it looks like:
Beginner's Guide To View State - CodeProject http://www.codeproject.com/Articles/31344/Beginner-s-Guide-To-View-...
5 of 10 4/17/2013 4:04 PM
Fig : View state stored in hidden field
Many of ASP.NET Programmers assume that this is an Encrypted format, but I am saying it again,
that this is not a encrypted string. It can be break easily. To make your view state secure, There are two
option for that,
First, you can make sure that the view state information is tamper-proof by using "hash code".
You can do this by adding "EnableViewStateMAC=true" with your page directive. MAC Stands
for "Message Authentication Code"
A hash code , is a cryptographically strong checksum, which is calculated by ASP.NET and its added
with the view state content and stored in hidden filed. At the time of next post back, the checksum
data again verified , if there are some mismatch, Post back will be rejected. we can set this property to
web.config file also.
Second option is to set ViewStateEncryptionMode="Always" with your page directives,
which will encrypt the view state data. You can add this in following way
It ViewStateEncryptionMode has three different options to set:
Always
Auto
Never
Always, mean encrypt the view state always, Never means, Never encrypt the view state data and
Auto Says , encrypt if any control request specially for encryption. For auto , control must call
Page.RegisterRequiresViewStateEncryption() method for request encryption.
we can set the Setting for "EnableViewStateMAC" and ViewStateEncryptionMode" in web.config
also.
Note : Try to avoid View State Encryption if not necessary , because it cause the performance issue.
Some Important Points
Questions Answer
Client Side or Server Side ? Client Side
Use Server Resource ? No
Easy to implement ? Yes
Cause Performance Issue ? For heavy data and case of encryption & decryption
Support Encryption Decryption? Yes
Can store objects ? Yes, but you need to serialize the class.
Timeout No
That's all for view state. Hope you have enjoyed this article, please don't forget to give me your
valuable suggestions. If anything need to update or changed please post your comments and please
give me suggestion.
Reference
Beginner's Guide To View State - CodeProject http://www.codeproject.com/Articles/31344/Beginner-s-Guide-To-View-...
6 of 10 4/17/2013 4:04 PM
Article Top
1 Tweet 0
Rate this: Poor Excellent Vote
Add a Comment or Question Search this forum Go
MSDN Reference
History
Written on Saturday, 29th November, 2008
Small Correction on Monday December 2008
License
This article, along with any associated source code and files, is licensed under The Code Project Open
License (CPOL)
About the Author
Abhijit JanaSoftware Developer (Senior)
India
Member
Follow on Twitter
.NET Consultant | Former Microsoft MVP - ASP.NET | CodeProject MVP, Mentor, Insiders| Technology
Evangelist | Author | Speaker | Geek | Blogger | Husband
Blog : http://abhijitjana.net
Web Site : http://dailydotnettips.com
Twitter : @AbhijitJana
My Kinect Book : Kinect for Windows SDK Programming Guide
Comments and Discussions
Profile popups Spacing Relaxed Noise Medium Layout Open All Per page 25 Update
First Prev Next
tarun _sharma 15 Apr '13 - 1:12
Superb Article dude..u Rocks!!
Reply · Email · View Thread ·Permalink · Bookmark
Member 8391376 2 Apr '13 - 7:47
Like 9
Comment
My vote of 5
Beginner's Guide To View State - CodeProject http://www.codeproject.com/Articles/31344/Beginner-s-Guide-To-View-...
7 of 10 4/17/2013 4:04 PM
Really awesome article on ViewState at one place with concise solution.
Thx,
-Rajan
Reply · Email · View Thread ·Permalink · Bookmark
abhi3eee 2 Apr '13 - 0:02
Nice Article
Reply · Email · View Thread ·Permalink · Bookmark
abhi993 14 Mar '13 - 12:20
This is called knowledge
Reply · Email · View Thread ·Permalink · Bookmark
Sampath Sridhar 7 Mar '13 - 21:34
Thanks for the article.
Able to get good understanding of Viewstate through this one.
Reply · Email · View Thread ·Permalink · Bookmark
Abhinesh M 25 Feb '13 - 4:17
The article was very easy to understand and implement viewstate. Thanks.
Reply · Email · View Thread ·Permalink · Bookmark
Mukesh_B 22 Feb '13 - 9:03
Very well written
Reply · Email · View Thread ·Permalink · Bookmark
Uday P.Singh 17 Feb '13 - 12:37
Very nice
Reply · Email · View Thread ·Permalink · Bookmark 5.00/5 (1 vote)
vinay raghavendr 4 Feb '13 - 1:40
Article is very good, good explanation with example. I look forward of articles on remaining
types of state management.
Reply · Email · View Thread ·Permalink · Bookmark
ZPop 26 Jan '13 - 5:04
Excellent. Thanks
Reply · Email · View Thread ·Permalink · Bookmark 5.00/5 (1 vote)
ravikant.sharma01 23 Jan '13 - 8:29
great article and very easy and it made the view state my cup of tea
Reply · Email · View Thread ·Permalink · Bookmark
My vote of 5
My vote of 5
Good article
You made Viewstate very simple
My vote of 4
My vote of 5
Nice Article
My vote of 5
My vote of 5
Beginner's Guide To View State - CodeProject http://www.codeproject.com/Articles/31344/Beginner-s-Guide-To-View-...
8 of 10 4/17/2013 4:04 PM
chaitanyasingh 12 Jan '13 - 10:03
good article for beiginners
Reply · Email · View Thread ·Permalink · Bookmark 5.00/5 (1 vote)
rajyash 9 Jan '13 - 3:45
What is difference bet field and properties in asp.net
Reply · Email · View Thread ·Permalink · Bookmark 1.00/5 (1 vote)
rajyash 9 Jan '13 - 3:43
Excellent tutorials
Reply · Email · View Thread ·Permalink · Bookmark
Member 8164277 4 Jan '13 - 1:38
Excellent Explanation
Reply · Email · View Thread ·Permalink · Bookmark
bluesathish 20 Dec '12 - 0:08
hi Abhijit Jana,
thanks for your nice article. And i've the doubt that how we can clear (or) dispose the viewstate
objects. Since its uses client side resources, we need to clear (or) dispose it when it is not in use.
kindly share your suggestion for this.
Regards,
Bluesathish
Reply · Email · View Thread ·Permalink · Bookmark
Abhijit Parab 17 Dec '12 - 3:10
Excellent article to understand the concept of View State
Reply · Email · View Thread ·Permalink · Bookmark 5.00/5 (1 vote)
Swathi Nagaraj 6 Nov '12 - 0:23
Its easily understable
Reply · Email · View Thread ·Permalink · Bookmark
girishmeena 24 Oct '12 - 9:35
it is good article written by you.
Reply ·View Thread ·Permalink · Bookmark
anilsarapati 28 Sep '12 - 21:16
It is good for starting learners....
Reply · Email · View Thread ·Permalink · Bookmark
nagpalvikas 27 Sep '12 - 8:25
My vote of 5
field and properties
View State
View State
how to clear the viewstate object?
Comment
My vote of 5
my vote for 4
My vote of 4
My vote of 4
Beginner's Guide To View State - CodeProject http://www.codeproject.com/Articles/31344/Beginner-s-Guide-To-View-...
9 of 10 4/17/2013 4:04 PM
Permalink | Advertise | Privacy | Mobile
Web02 | 2.6.130408.1 | Last Updated 29 Nov 2008
Article Copyright 2008 by Abhijit Jana
Everything else Copyright © CodeProject, 1999-2013
Terms of Use
Layout: fixed | fluid
Adding a scenario would have added cherry to the cake. It would have made the article even
more interesting if you would have given a scenario where View state is beneficial.
Reply · Email · View Thread ·Permalink · Bookmark
rahul7596 4 Sep '12 - 13:37
excellent Article It is really helpful.but please tell me where can i found your other articles of
state management?
Reply · Email · View Thread ·Permalink · Bookmark
S.K.Tripathi 30 Aug '12 - 9:20
good one...
Reply ·View Thread ·Permalink · Bookmark
usrikanthvarma 13 Aug '12 - 2:25
Very good Article....
Reply · Email · View Thread ·Permalink · Bookmark
Member 9334911 13 Aug '12 - 1:44
very good understanding is possible... great work
Reply · Email · View Thread ·Permalink · Bookmark
Last Visit: 17 Apr '13 - 9:18 Last Update: 17 Apr '13 - 6:01 Refresh 1 2 3 4 5 Next »
General News Suggestion Question Bug Answer Joke Rant Admin
About an article
My vote of 4
My vote of 4
My vote of 5
Beginner's Guide To View State - CodeProject http://www.codeproject.com/Articles/31344/Beginner-s-Guide-To-View-...
10 of 10 4/17/2013 4:04 PM