beginner's guide to view state - codeproject

10
9,813,751 members (34,266 online) 621 Sign out Okey Ikechuwu home quick answers discussions features community help what 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 State By 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

Upload: ikechukwu-okey

Post on 08-Nov-2014

19 views

Category:

Documents


1 download

DESCRIPTION

helps new folks get around the basics of viewstate.

TRANSCRIPT

Page 1: Beginner's Guide to View State - CodeProject

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

Page 2: Beginner's Guide to View State - CodeProject

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

Page 3: Beginner's Guide to View State - CodeProject

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

Page 4: Beginner's Guide to View State - CodeProject

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

Page 5: Beginner's Guide to View State - CodeProject

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

Page 6: Beginner's Guide to View State - CodeProject

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

Page 7: Beginner's Guide to View State - CodeProject

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

Page 8: Beginner's Guide to View State - CodeProject

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

Page 9: Beginner's Guide to View State - CodeProject

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

Page 10: Beginner's Guide to View State - CodeProject

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