An Extended Look at the Profile Object - Part 1
page 4 of 5
by Bilal Haidar
Feedback
Average Rating: 
Views (Total / Last 10 Days): 33195/ 48

Using Group Profile Properties

In the previous section we demonstrated how to define simple properties in the profile section of the web.config file. Sometimes when developing a web application, we may need to group a set of properties within the Profile object. For instance, one might be developing a web application for a school, where the application needs to store a student’s details in a Profile object, in addition to storing other Profile properties. The way to do so is to place the student’s details in a group section in the profile configuration section. In Listing 3 below, we have a profile configuration section that includes a group section named Student, which defines the student details of FirstName, LastName, and StudentId.

Listing 3. Group Profile Property Configuration

<configuration>
    <system.web>
        <authentication mode="forms" />

        <anonymousIdentification enabled="true" />

        <profile enabled="true">
            <properties>
                <group name="Student">
                    <add name="FirstName" allowAnonymous="true" />
                    <add name="LastName" allowAnonymous="true" />
                    <add name="StudentId" allowAnonymous="true" type="Int32" />
                </group>
            </properties>
        </profile>
    </system.web>
</configuration>

Listing 3 defines a group section named Student and specifies its three properties. The first two, FirstName and LastName, do not have a defined type, which means that they are of the default type of string. The third property, which is StudentId, has a type of Int32 representing the student's ID number.

Once the group profile configuration section is defined, we can start accessing the Profile object’s Student property from the server-side code, as shown in the code below:

Profile.Student.StudentId = 9898;
Profile.Student.FirstName = "Johny";
Profile.Student.LastName = "White";

The page in Listing 4 shows how to use a Profile group object to persist a student’s details. This page displays a form to view and modify the values of the Profile's Student group property (see Figure 2).

Figure 2. Group Profile Properties

 

Listing 4. GroupProperties.aspx (C#)

<%@ Page Language="C#" %>
<script runat="server">

    protected void Page_Load(object sender, EventArgs e)
    {
        if (!Page.IsPostBack)
        {
            StudentIDTextbox.Text = Profile.Student.StudentId.ToString();
            FirstNameTextbox.Text = Profile.Student.FirstName;
            LastNameTextbox.Text = Profile.Student.LastName;
        }
    }
    protected void Modify_Click(object sender, EventArgs e)
    {
        if (!string.IsNullOrEmpty(StudentIDTextbox.Text))
        {
            int IntId;
            Profile.Student.StudentId = 
                (int.TryParse(StudentIDTextbox.Text, out IntId)) ? IntId : 0;
        }
        if (!string.IsNullOrEmpty(FirstNameTextbox.Text))
            Profile.Student.FirstName = FirstNameTextbox.Text;
        if (!string.IsNullOrEmpty(LastNameTextbox.Text))
            Profile.Student.LastName = LastNameTextbox.Text;
    }
    protected void Page_PreRender(object sender, EventArgs e)
    {
        StudentIDLabel.Text = Profile.Student.StudentId.ToString();
        FirstNameLabel.Text = Profile.Student.FirstName;
        LastNameLabel.Text = Profile.Student.LastName;
    }

</script>
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
    <title>Group Profile Properties</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <h1>
            Group Profile Properties</h1>
        <h3>
            Current Properties</h3>
        <p>
            Student ID : <asp:Label ID="StudentIDLabel" runat="server" /><br />
            First Name : <asp:Label ID="FirstNameLabel" runat="server" /><br />
            Last Name : <asp:Label ID="LastNameLabel" runat="server" /><br />
            </p>
        <hr />
        <h3>
            Modify Properties</h3>
        <p>
            Student ID : <asp:TextBox ID="StudentIDTextbox" runat="server" /><br />
            First Name : <asp:TextBox ID="FirstNameTextbox" runat="server" /><br />
            Last Name : <asp:TextBox ID="LastNameTextbox" runat="server" /><br />
            </p>
        <p>
            <asp:Button ID="Modify" OnClick="Modify_Click" Text="Modify Student Profile"
                runat="server" />
            </p>
    </div>
    </form>
</body>
</html>

Once the Modify Student Profile button is clicked, the Profile's Student group properties are updated with the new values entered.

One thing to mention is that we cannot nest one group section within another group section. However, we can have as many group sections as we want in the Profile configuration section.


View Entire Article

User Comments

Title: HELP   
Name: Ahamd
Date: 2010-03-29 8:22:16 AM
Comment:
Hi, I used this tutorial, but i get an error msg as, "Unable to connect to SQL Server database." I do not hav a SQL instance in my system. I'll hav to connect to a server in a network PC. So plz tell me what modifications i'll hav to do to run the code.
Title: Thank you   
Name: blad3runn69
Date: 2009-01-14 10:30:07 PM
Comment:
Thank you for the info and code Bilal, very helpful and muchly appreciated. :)
Title: An Extended Look at the Profile Object - Part 1   
Name: swapnil
Date: 2008-08-18 10:00:09 AM
Comment:
good one.
Title: Same Topic, Different Framework   
Name: RichardW
Date: 2008-04-25 5:39:37 PM
Comment:
Thank you. I always seem to get stuck on context. This got me past the context issues of Profiles in ASP.NET Membership.

Wondering if anyone in house has thought to go in depth on this same topic of Membership/Profiles but from the context of Ajax and Silverlight as the framework using ASP.NET 3.5 in the background. At the Olympics this year, NBC will be streaming with Silverlight... It's gonna be a boost for the technology, would like to come up to speed with others on it using the foundations of ASP.NET 3.5/Ajax to control it.
Title: Still don't see the point   
Name: Craig
Date: 2008-03-27 9:42:08 PM
Comment:
Good article but I really don't see the point of the profile object. If you're going to register users on a web site you'll have built that in to your DB schema and be authenticating them against that. Therefore, no point in having some bot do it for you.

If you're an anonymous user, how on earth can a system know who you are when you return to pick out your profile data again? I bet it's only available if you return within the session timeout period. In which case, use sessions, it's MUCH easier. It's becoming like you need a degree in computer science just to write a simple web page with .NET.
Title: Profiles with Web Applications   
Name: Mark
Date: 2007-06-11 9:44:59 AM
Comment:
Did you ever notice that if you use a web application instead of a website, the profile object is not available? Instead, you can access the currently logged on user profile through context.current.profile. The problem is, if you want to change information during the registration process, you can't do it. Do you have any way to change info in the profile of a user who isn't logged on using a web application?
Title: Thanks   
Name: john
Date: 2007-06-11 8:23:03 AM
Comment:
This helped me a lot to understand profile object.
Title: Fantastic Inroduction Article   
Name: |__Roshan__|
Date: 2007-02-09 4:04:06 AM
Comment:
This a fantastic intoduction article of the new ASP.NET personalization feature, the Profile object..
Title: Good Stuff!   
Name: Adi
Date: 2006-07-02 2:37:24 AM
Comment:
Nice intro! Easy and enjoyable to follow especially for .net newbie like me :)
Thanks Bilal!
Title: Re: All   
Name: Bilal Haidar [MVP]
Date: 2006-03-16 5:23:08 AM
Comment:
I am very glad you are happy with this article.

Thank you all.
Title: Good   
Name: Lajpathrai.Y
Date: 2006-03-16 4:43:37 AM
Comment:
Thanks a lot to author. really a good explanation. will useful to freshers
Title: Great Intro   
Name: Ed
Date: 2006-01-18 8:38:59 PM
Comment:
Perfect extension of the MS explanation (which was lacking a bit).
Title: Comment   
Name: Mihir Solanki
Date: 2005-12-24 9:17:06 PM
Comment:
Thanks, Perfect introduction
Title: Comment   
Name: Rainer
Date: 2005-11-17 10:31:58 AM
Comment:
Fine. But I am looking now for an easy way to work with these additional user profile properties. Like: Show me all users with zip code x.
Title: Nice article   
Name: Matthew Lee
Date: 2005-11-08 4:19:40 AM
Comment:
Nice, Informative stuff...






Community Advice: ASP | SQL | XML | Regular Expressions | Windows


©Copyright 1998-2024 ASPAlliance.com  |  Page Processed at 2024-04-23 10:02:54 AM  AspAlliance Recent Articles RSS Feed
About ASPAlliance | Newsgroups | Advertise | Authors | Email Lists | Feedback | Link To Us | Privacy | Search