Creating Complex Profile Properties : Introduction « Profile « ASP.NET Tutorial






File: App_Code\ShoppingCart.cs

using System;
using System.Collections.Generic;
using System.Web.Profile;

namespace MyNamespace
{
    public class ShoppingCart
    {
        private List<CartItem> _items = new List<CartItem>();

        public List<CartItem> Items
        {
             get { return _items; }
        }
    }

    public class CartItem
    {

        private string _name;
        private decimal _price;
        private string _description;

        public string Name
        {
            get { return _name; }
            set { _name = value; }
        }

        public decimal Price
        {
            get { return _price; }
            set { _price = value; }
        }

        public string Description
        {
            get { return _description; }
            set { _description = value; }
        }

        public CartItem() { }

        public CartItem(string name, decimal price, string description)
        {

            _name  = name;
            _price = price;
            _description = description;
        }
    }
}

File: Web.Config

<configuration>
<system.web>

  <profile>
    <properties>
      <add name="ShoppingCart" type="MyNamespace.ShoppingCart" />
    </properties>
  </profile>

</system.web>
</configuration>


File: Default.aspx

<%@ Page Language="C#" %>
<%@ Import Namespace="MyNamespace" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">

    void Page_PreRender()
    {
        grdShoppingCart.DataSource = Profile.ShoppingCart.Items;
        grdShoppingCart.DataBind();
    }

    protected void btnAdd_Click(object sender, EventArgs e)
    {
        CartItem newItem = new CartItem(txtName.Text, decimal.Parse(txtPrice.Text), txtDescription.Text);
        Profile.ShoppingCart.Items.Add(newItem);
    }
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head id="Head1" runat="server">
    <title>Show ShoppingCart</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>

    <asp:GridView
        id="grdShoppingCart"
        EmptyDataText="There are no items in your shopping cart"
        Runat="server" />

    <br />

    <fieldset>
    <legend>Add Product</legend>
    <asp:Label
        id="lblName"
        Text="Name:"
        AssociatedControlID="txtName"
        Runat="server" />
    <br />
    <asp:TextBox
        id="txtName"
        Runat="server" />
    <br /><br />
    <asp:Label
        id="lblPrice"
        Text="Price:"
        AssociatedControlID="txtPrice"
        Runat="server" />
    <br />
    <asp:TextBox
        id="txtPrice"
        Runat="server" />
    <br /><br />
    <asp:Label
        id="lblDescription"
        Text="Description:"
        AssociatedControlID="txtDescription"
        Runat="server" />
    <br />
    <asp:TextBox
        id="txtDescription"
        Runat="server" />
    <br /><br />
    <asp:Button
        id="btnAdd"
        Text="Add To Cart"
        Runat="server" OnClick="btnAdd_Click" />
    </fieldset>

    </div>
    </form>
</body>
</html>








15.5.Introduction
15.5.1.Using Profiles
15.5.2.Get / set profile data defined in Web.config
15.5.3.Get / set user-defined object to profile
15.5.4.Inheriting a Profile from a Custom Class
15.5.5.Creating Complex Profile Properties
15.5.6.Making Personalization Properties Read-Only
15.5.7.Defining default values for personalization properties
15.5.8.Working with the automaticSaveEnabled attribute