Click here to Skip to main content
15,886,362 members
Articles / Web Development / ASP.NET
Article

Session and ViewState alternative

Rate me:
Please Sign up or sign in to vote.
3.58/5 (9 votes)
21 Jun 2011CPOL1 min read 48.2K   715   13   12
A great alternative for Sessions and ViewStates in ASP.NET.

Merula Smartpages Logo

Introduction

When you want to remember your data in an ASP.NET site after a postback, you will have to use Session or ViewState to remember your data. It’s a lot work to use Session and ViewStates, I just want to declare variables like in a desktop application.

So I created a library called Merula SmartPages. This library will remember the properties and variables of your page.

Using the code

You can download the SmartPages Library here

Using the SmartPages library is very simple. All that you’ll have to do is create a new ASP.NET page and change the extension of the class from Page to SmartPage.

C#
using System;
using MerulaSmartPages;

namespace SmartPageTester.smartpages
{
    public partial class MyPage : SmartPage
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            
        }
    }
}

In ASP.NET, this won’t work:

C#
using System;
using System.Web.UI;
using MerulaSmartPages;

namespace SmartPageTester.smartpages
{
    public partial class MyPage : Page
    //normal asp.net page (Change Page to SmartPage and it will work!)
    {
        private string value;
        protected void Page_Load(object sender, EventArgs e)
        {
            if(!IsPostBack)
            {
                value = "<h1>Hello world!</h1>"; //set the value
            }
            else
            {
                Response.Write(value); //wont work, value will be empty
            }
        }
    }
}

The ASP code:

ASP.NET
<%@ Page Language="C#" AutoEventWireup="true" 
   CodeBehind="MyPage.aspx.cs" Inherits="SmartPageTester.smartpages.MyPage" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title></title>
    </head>
    <body>
        <form id="form1" runat="server">
            <div>
                <!-- Button to create a postback -->
                <asp:Button ID="btnHello" runat="server" Text="Say Hello" />
            </div>
        </form>
    </body>
</html>

When you change the class extension from Page to SmartPage, the above example will work.

How does it work?

Every user on your site has a unique Session. When a user visits your SmartPage, the SmartPage signs in by a PageManager. The PageManager is a singleton and will keep the data of the SmartPage alive. When a postback occurs, SmartPage will load its data from the PageManager. With the help of Reflection, all the data from the variables and properties will be filled in.

When SmartPage is not used within 5 minutes, it will be cleared from the server's memory.

diagram

Merula SmartPages

More information about Merula SmartPages can be found at http://www.merulasoft.nl.

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


Written By
Student
Netherlands Netherlands
This member has not yet provided a Biography. Assume it's interesting and varied, and probably something to do with programming.

Comments and Discussions

 
GeneralMy vote of 4 Pin
Armando de la Torre29-Jun-11 13:16
Armando de la Torre29-Jun-11 13:16 
QuestionRemimber Pin
Yves27-Jun-11 11:26
Yves27-Jun-11 11:26 
NewsSourcecode Pin
Rob Stortelers22-Jun-11 7:20
Rob Stortelers22-Jun-11 7:20 
Question[My vote of 2] Why is it a lot of work to work with Session/ViewState? Pin
JV999921-Jun-11 21:14
professionalJV999921-Jun-11 21:14 
AnswerRe: [My vote of 2] Why is it a lot of work to work with Session/ViewState? Pin
rManiks5-Jul-11 23:40
rManiks5-Jul-11 23:40 
QuestionNeed source code. Pin
Vinayak Singh Rathore21-Jun-11 21:03
Vinayak Singh Rathore21-Jun-11 21:03 
GeneralMy vote of 2 Pin
GilbertoBotaro21-Jun-11 13:45
GilbertoBotaro21-Jun-11 13:45 
GeneralMy vote of 2 Pin
ashved21-Jun-11 9:36
ashved21-Jun-11 9:36 
QuestionI think you need to.......... PinPopular
DaveAuld21-Jun-11 6:23
professionalDaveAuld21-Jun-11 6:23 
AnswerRe: I think you need to.......... Pin
wgbarnum21-Jun-11 6:54
wgbarnum21-Jun-11 6:54 
GeneralRe: I think you need to.......... Pin
Paulo Zemek21-Jun-11 7:48
mvaPaulo Zemek21-Jun-11 7:48 
GeneralMy vote of 5 Pin
mhamad zarif21-Jun-11 5:52
mhamad zarif21-Jun-11 5:52 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.