In this article I will make tutorial about how to make read, write and delete cookies in ASP.NET WebPages 3.1. Cookies are a small text file containing information about a user; for example, a cookie may contain information on the last video the user watched or what items they have in their shopping cart. Many e-commerce websites like Amazon save cookies to your computer that can either collect your data or store the items in the shopping cart.
In Microsoft WebMatrix create a new website based of the Personal Site template name the website Cookies. Next in the root folder create a page called Settings.cshtml.
Writing a Cookie
Writing, reading and deleting a cookie are all fairly simple, as will be displayed in this tutorial. We will give the user an option to choose between two site layouts, and once they select which one they prefer a cookie will be saved to their computer. This will be read by the main master page and it will load the correct style sheet.
Writing Cookie Syntax
Response.Cookies["Cookie Name"].Value = "Value";
Response.Cookies["Cookie Name"].Expires = DateTime.Now.Add (Either, days, months, years, minutes etc);
If you do not specify when the cookie expires then it will automatically expire at the end of the session (when the user closes their browser).
In the Settings page insert this code:
C# Code:
@{
if (IsPost){
var layout = Request["layout"];
if (layout == "Dark"){
Response.Cookies["Theme"].Value = "Dark";
Response.Cookies["Theme"].Expires = DateTime.Now.AddYears(1);
}
}
}
Here we have var layout which requests the HTML control layout. After the user is given an option, if they choose Dark a cookie with the name Theme and value Dark will be saved to their browser, and it expires in one year.
HTML Code:
<form method="post">
<fieldset>
<legend><h4>Choose Layout</h4></legend>
<label>Select Layout</label>
<select name="layout">
<option value="Dark">Dark</option>
<option value="Default">Default</option>
</select>
<input type="submit" />
</fieldset>
</form>
Leave the option default for now because we will come back to it. Now run the page and select Dark as your theme; the page will refresh. Then in your chosen browser go to your stored cookies and you should see that a new cookie has been made called Theme (this should be under a folder called localhost by default) with the value Dark. For chrome users simply copy and paste this in the address bar of your browser: chrome://chrome/settings/cookies.
Reading Cookies
The domain which inserts the cookie can read the cookie. So for example, if thecodingguys.net writes a cookie called "Theme" Google.com cannot read that cookie. This will apply to sub-domains as well; m.thecodingguys.net cannot read a cookie which was created by www.thecodingguys.net.
Now the cookie should be inserted in your browser. Before we can read the cookie we need to make a new layout, so we will make a new style sheet. In the content folder copy the Site.css file and paste it in that folder, and re-name it to Site_Two.css. Next open the Site_Two.css find the body style and change the background colour to a colour of your choice (make sure it is different than the default).
Navigate to the layouts folder and open the _SIteLayout.cshtml file. Find the linked style sheet (below title tag) and replace it with:
C# Code:
@if (Request.Cookies["Theme"] != null){//MAKE SURE COOKIE EXIST
if (Request.Cookies["Theme"].Value == "Dark"){//READ COOKIE VALUE
<link href="~/Content/Site_Two.css" rel="stylesheet" />
}
}else{
<link href="~/Content/Site.css" rel="stylesheet" /> //IF COOKIES DOES NOT EXIST LOAD DEFAULT STYLESHEET
}
The first If Statement requests the cookie by name, not the cookie value but just the cookie named Theme. We need to make sure it is not null (meaning it exists), and then if it exists read the value. If the value is Dark, and it will load the second style sheet. Now if the cookie is not there it will load the default style sheet.
Deleting Cookies
Return to the Settings.cshtml file and add this to the If Statement:
C# Code:
else if (layout == "Default"){
Response.Cookies["Theme"].Expires = DateTime.Now.AddYears(-1);
}
Deleting a cookie is simple: on submit if the user selects the Default option the cookie is deleted. There is no direct command to delete the cookie, all we do is set the expiry date to a previous date. In this case it is set to the year before meaning it has expired and the browser will delete it.
Summary
Reading, writing and deleting cookies is quite simple. Cookies are very useful when you want to have full control overs users and provide extra functionality. Remember that cookies are client sided so users can disable them if they want to. Also remember that there are some laws (EU Law) regarding cookies, so make sure you inform users you are saving cookies.
HostForLIFE.eu ASP.NET WebPages 3.1 Hosting
European best, cheap and reliable ASP.NET hosting with instant activation. HostForLIFE.eu is #1 Recommended Windows and ASP.NET hosting in European Continent. With 99.99% Uptime Guaranteed of Relibility, Stability and Performace. HostForLIFE.eu security team is constantly monitoring the entire network for unusual behaviour. We deliver hosting solution including Shared hosting, Cloud hosting, Reseller hosting, Dedicated Servers, and IT as Service for companies of all size.