Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

ASP.NET: variable that can be accessed by entire site

I am new to ASP .NET, I am trying to setup a website in Visual Studio with C#.

My background is in PHP. In that language, if I want a variable to be accessible by every page, simply put it in a include file.

Is there anything similar to C# and ASP .NET? There is an site.master page, but I am not sure how to access it's variables from page contents. Thanks in advance.

like image 608
Bill Software Engineer Avatar asked May 24 '11 23:05

Bill Software Engineer


People also ask

What is ASP explain lifetime of ASP variable?

The Lifetime of VariablesA variable declared outside a procedure can be accessed and changed by any script in the ASP file. A variable declared inside a procedure is created and destroyed every time the procedure is executed. No scripts outside the procedure can access or change the variable.

What is viewstate in ASP.NET c#?

View state is the method that the ASP.NET page framework uses to preserve page and control values between round trips. When the HTML markup for the page is rendered, the current state of the page and values that must be retained during postback are serialized into base64-encoded strings.

What type of data is a session state variable designed to store?

Session variables are single-user global data stored on the web server, meaning by default a session state variable is stored in the web server memory and is available across all pages but it will be for a single session. Client Machine Cookies are being used by a session to store a session id.

Are sessions enabled by default?

It is used to store value for the particular time session. By default, ASP.NET session state is enabled for all ASP.NET applications. Each created session is stored in SessionStateItemCollection object. We can get current session value by using Session property of Page object.


2 Answers

You have a few different options here:


Session Variables Session variables are stored in the server's memory for each user, and can be read and written to as often as required. These are limited to a per-user basis, so if you want to hold a single variable for all users, then this isn't the way to go.

Usage:

Session["MyVariable"] = 5;
int myVariable = (int)Session["MyVariable"]; //Don't forget to check for null references!

You can to set a user's session variable in your global.asax file under the session_start event handler if required.


Application/Cache Variables Application and Cache variables are accessible by any user, and can be get/set as required. The only difference between the two is that Cache variables can expire, which makes them useful for things such as database query results, which can be held for a while before they're out of date. Usage:

Application["MyVariable"] = 5;
int myVariable = (int)Application["MyVariable"]; //Don't forget to check for null references!

You can set an application variable in your global.asax file in the application_start event handler if required.


Web.Config This is probably the preferred way of storing constants in your application, since they are stored as "Application Settings" and changed in your web.config file as required without having to recompile your site. application settings are stored in the <appsettings> area of your file using this syntax:

<appSettings>
  <add key="MyVariable" value="5" />
</appSettings>

Web.config values should be considered read-only in your code, and can simply be accessed using this code in your pages:

int myVariable = (int)System.Configuration.ConfigurationSettings.AppSettings["MyVariable"];

Static Variables Alternatively, you could just create a class that contains a static property to hold your variable like this:

public class SiteVariables
{
    private static _myVariable = 0;
    public static int MyVariable
    {
        get { return _myVariable; }
        set { _myVariable = value; }
    }
}

And then access it like this:

int myVar = SiteVariables.MyVariable;

I actually use a combination of the latter two solutions in my code. I'll keep my settings in my web.config file, and then create a class called ApplicationSettings that reads the values from web.config when required using static properties.

Hope this helps

like image 155
Karl Nicoll Avatar answered Sep 20 '22 20:09

Karl Nicoll


You could create a static class with a static member:

public static MyClass
{
  public static MyVariable { get; set; }
}

Then from anywhere in the site you can call MyClass.MyVariable to get or set the value.

Keep in mind a significant difference between this and PHP. In PHP, you're running scripts and you include other scripts to make one big script. In ASP.NET, you're compiling code into assemblies. The patterns are different.

like image 20
David Avatar answered Sep 20 '22 20:09

David