Click here to Skip to main content
Licence CPOL
First Posted 21 Jun 2011
Views 8,682
Downloads 346
Bookmarked 9 times

Session and ViewState alternative

By | 21 Jun 2011 | Article
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.

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:

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:

<%@ 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)

About the Author

Rob Stortelers

Student

Netherlands Netherlands

Member

Follow on Twitter Follow on Twitter


Sign Up to vote   Poor Excellent
Add a reason or comment to your vote: x
Votes of 3 or less require a comment

Comments and Discussions

 
You must Sign In to use this message board. (secure sign-in)
 
Search this forum  
 FAQ
    Noise  Layout  Per page   
  Refresh
GeneralMy vote of 4 PinmemberArmando de la Torre13:16 29 Jun '11  
QuestionRemimber PinmemberYves11:26 27 Jun '11  
NewsSourcecode PinmemberRob Stortelers7:20 22 Jun '11  
Question[My vote of 2] Why is it a lot of work to work with Session/ViewState? PinmemberJV999921:14 21 Jun '11  
AnswerRe: [My vote of 2] Why is it a lot of work to work with Session/ViewState? PinmemberrManiks23:40 5 Jul '11  
QuestionNeed source code. PinmemberVinayak Singh Rathore21:03 21 Jun '11  
GeneralMy vote of 2 PinmemberGilbertoBotaro13:45 21 Jun '11  
GeneralMy vote of 2 PinmemberArtusik9:36 21 Jun '11  
QuestionI think you need to.......... PinPopularmemberDaveAuld6:23 21 Jun '11  
AnswerRe: I think you need to.......... Pinmemberwgbarnum6:54 21 Jun '11  
GeneralRe: I think you need to.......... PinmemberPaulo Zemek7:48 21 Jun '11  
GeneralMy vote of 5 Pinmembermhamad zarif5:52 21 Jun '11  

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

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

Permalink | Advertise | Privacy | Mobile
Web01 | 2.5.120517.1 | Last Updated 21 Jun 2011
Article Copyright 2011 by Rob Stortelers
Everything else Copyright © CodeProject, 1999-2012
Terms of Use
Layout: fixed | fluid