将具有配置文件的网站转换为Web应用程序项目

时间:2013-08-27 20:58:39

标签: c# asp.net profiles

我正在尝试将现有的website转换为Web应用程序项目,但我在使配置文件工作方面遇到了很大的问题。

网站项目中的代码隐藏示例是

寄存器与 - 角色 - 和 - profile.ascx.cs

    // Add the newly created user to the default Role.
    Roles.AddUserToRole(CreateUserWizard1.UserName, wsatDefaultRole);

    // Create an empty Profile for the newly created user
    ProfileCommon p = (ProfileCommon)ProfileCommon.Create(CreateUserWizard1.UserName, true);

    // Populate some Profile properties. Values are located in web.config file
    p.Company.Company = ((TextBox)CreateUserWizard1.CreateUserStep.ContentTemplateContainer.FindControl("txbOfficeName")).Text;
    p.Company.Address = ((TextBox)CreateUserWizard1.CreateUserStep.ContentTemplateContainer.FindControl("txbOfficeAddress")).Text;
    p.Company.City = ((TextBox)CreateUserWizard1.CreateUserStep.ContentTemplateContainer.FindControl("txbOfficeCity")).Text;
    p.Company.State = ((DropDownList)CreateUserWizard1.CreateUserStep.ContentTemplateContainer.FindControl("ddlStates")).SelectedValue;
    p.Company.PostalCode = ((TextBox)CreateUserWizard1.CreateUserStep.ContentTemplateContainer.FindControl("txbOfficeZip")).Text;
    p.Company.Phone = ((TextBox)CreateUserWizard1.CreateUserStep.ContentTemplateContainer.FindControl("txbContactPhone")).Text;
    p.Company.Fax = ((TextBox)CreateUserWizard1.CreateUserStep.ContentTemplateContainer.FindControl("txbContactFax")).Text;
    p.Preferences.Newsletter = ((DropDownList)CreateUserWizard1.CreateUserStep.ContentTemplateContainer.FindControl("ddlNewsletter")).SelectedValue;

    // Save profile - must be done since we explicitly created it
    p.Save();

的web.config

<profile defaultProvider="MyCMSTableProfileProvider" automaticSaveEnabled="false" enabled="true">
    <providers>
        <clear/>
        <add name="MyCMSTableProfileProvider" applicationName="MyCMS" connectionStringName="dbMyCMSConnectionString" table="aspnet_CustomProfile" type="CustomProfile.SqlTableProfileProvider"/>
        <add name="MyCMSStoredProcedureProfileProvider" applicationName="MyCMS" connectionStringName="dbMyCMSConnectionString" type="CustomProfile.SqlStoredProcedureProfileProvider" setProcedure="sp_wsat_SetCustomProfileData" readProcedure="sp_wsat_GetCustomProfileData"/>
    </providers>
    <properties>
        <group name="Personal">
            <add name="FirstName" type="String" defaultValue="[null]" customProviderData="FirstName;nvarchar"/>
            <add name="LastName" type="String" defaultValue="[null]" customProviderData="LastName;nvarchar"/>
            <add name="Gender" type="String" defaultValue="[null]" customProviderData="Gender;nvarchar"/>
            <add name="BirthDate" type="DateTime" defaultValue="[null]" customProviderData="BirthDate;datetime"/>
            <add name="Occupation" type="String" defaultValue="[null]" customProviderData="Occupation;nvarchar"/>
            <add name="Website" type="String" defaultValue="[null]" customProviderData="PersonalWebsite;nvarchar"/>
        </group>
        <group name="Address">
            <add name="Country" type="String" defaultValue="[null]" customProviderData="Country;nvarchar"/>
            <add name="Address" type="String" defaultValue="[null]" customProviderData="Address;nvarchar"/>
            <add name="AptNumber" type="String" defaultValue="[null]" customProviderData="AptNumber;nvarchar"/>
            <add name="City" type="String" defaultValue="[null]" customProviderData="City;nvarchar"/>
            <add name="State" type="String" defaultValue="[null]" customProviderData="State;nvarchar"/>
            <add name="PostalCode" type="String" defaultValue="[null]" customProviderData="PostalCode;nvarchar"/>
        </group>
        <group name="Contacts">
            <add name="DayPhone" type="String" defaultValue="[null]" customProviderData="DayPhone;nvarchar"/>
            <add name="DayPhoneExt" type="String" defaultValue="[null]" customProviderData="DayPhoneExt;nvarchar"/>
            <add name="EveningPhone" type="String" defaultValue="[null]" customProviderData="EveningPhone;nvarchar"/>
            <add name="EveningPhoneExt" type="String" defaultValue="[null]" customProviderData="EveningPhoneExt;nvarchar"/>
            <add name="CellPhone" type="String" defaultValue="[null]" customProviderData="CellPhone;nvarchar"/>
            <add name="Fax" type="String" defaultValue="[null]" customProviderData="Fax;nvarchar"/>
        </group>
        <group name="Company">
            <add name="Company" type="String" defaultValue="[null]" customProviderData="Company;nvarchar"/>
            <add name="Address" type="String" defaultValue="[null]" customProviderData="Address2;nvarchar"/>
            <add name="City" type="String" defaultValue="[null]" customProviderData="City2;nvarchar"/>
            <add name="State" type="String" defaultValue="[null]" customProviderData="State2;nvarchar"/>
            <add name="PostalCode" type="String" defaultValue="[null]" customProviderData="PostalCode2;nvarchar"/>
            <add name="Phone" type="String" defaultValue="[null]" customProviderData="Phone2;nvarchar"/>
            <add name="Fax" type="String" defaultValue="[null]" customProviderData="Fax2;nvarchar"/>
            <add name="Website" type="String" defaultValue="[null]" customProviderData="Website2;nvarchar"/>
        </group>
        <group name="Preferences">
            <add name="Culture" type="String" defaultValue="en-US" customProviderData="Culture;nvarchar"/>
            <add name="Newsletter" type="String" defaultValue="[null]" customProviderData="Newsletter;nvarchar"/>
        </group>
    </properties>
</profile>

但这会导致错误The type or namespace name 'ProfileCommon' could not be found (are you missing a using directive or an assembly reference?)

使用此example我创建了2个新类

ProfileInfo.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace myWSAT.controls
{
    [Serializable]
    public class Personal
    {
        public string FirstName { get; set; }
        public string LastName { get; set; }
        public string Gender { get; set; }
        public DateTime BirthDate { get; set; }
        public string Occupation { get; set; }
        public string Website { get; set; }
    }

    [Serializable]
    public class Address
    {
        public string Country { get; set; }
        public string Address1 { get; set; }
        public string AptNumber { get; set; }
        public string City { get; set; }
        public string State { get; set; }
        public string PostalCode { get; set; }
    }

    [Serializable]
    public class Contacts
    {
        public string DayPhone { get; set; }
        public string DayPhoneExt { get; set; }
        public string EveningPhone { get; set; }
        public string EveningPhoneExt { get; set; }
        public string CellPhone { get; set; }
        public string Fax { get; set; }

    }

    [Serializable]
    public class Company
    {
        public string CompanyName { get; set; }
        public string Address { get; set; }
        public string City { get; set; }
        public string State { get; set; }
        public string PostalCode { get; set; }
        public string Phone { get; set; }
        public string Fax { get; set; }
        public string Website { get; set; }

    }

    [Serializable]
    public class Preferences
    {
        public string Culture { get; set; }
        public string Newsletter { get; set; }

    }

    [Serializable]
    public class ProfileInfo
    {
        public Personal Personal { get; set; }
        public Address Address { get; set; }
        public Contacts Contacts { get; set; }
        public Company Company { get; set; }
        public Preferences Preferences { get; set; }
    }

}

wProfile.cs

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

namespace myWSAT.controls
{
    public class wProfile : ProfileBase
    {
        public ProfileInfo ProfileInfo
        {
            get { return (ProfileInfo)GetPropertyValue("ProfileInfo"); }
        }

        public static wProfile GetProfile()
        {
            return (wProfile)HttpContext.Current.Profile;
        }

        public static wProfile GetProfile(string userName)
        {
            return (wProfile)Create(userName);
        }  
    }
}

然后修改 register-with-role-and-profile.ascx.cs

// add newly created user to default Role specified above
if (Roles.RoleExists(wsatDefaultRole))
{
    // Add the newly created user to the default Role.
    Roles.AddUserToRole(CreateUserWizard1.UserName, wsatDefaultRole);

    // Create an empty Profile for the newly created user
    wProfile p = wProfile.GetProfile(Membership.GetUser().UserName);
    //ProfileCommon p = (ProfileCommon)ProfileCommon.Create(CreateUserWizard1.UserName, true);

    // Populate some Profile properties. Values are located in web.config file
    p.ProfileInfo.Company.CompanyName = ((TextBox)CreateUserWizard1.CreateUserStep.ContentTemplateContainer.FindControl("txbOfficeName")).Text;
    p.ProfileInfo.Company.Address = ((TextBox)CreateUserWizard1.CreateUserStep.ContentTemplateContainer.FindControl("txbOfficeAddress")).Text;
    p.ProfileInfo.Company.City = ((TextBox)CreateUserWizard1.CreateUserStep.ContentTemplateContainer.FindControl("txbOfficeCity")).Text;
    p.ProfileInfo.Company.State = ((DropDownList)CreateUserWizard1.CreateUserStep.ContentTemplateContainer.FindControl("ddlStates")).SelectedValue;
    p.ProfileInfo.Company.PostalCode = ((TextBox)CreateUserWizard1.CreateUserStep.ContentTemplateContainer.FindControl("txbOfficeZip")).Text;
    p.ProfileInfo.Company.Phone = ((TextBox)CreateUserWizard1.CreateUserStep.ContentTemplateContainer.FindControl("txbContactPhone")).Text;
    p.ProfileInfo.Company.Fax = ((TextBox)CreateUserWizard1.CreateUserStep.ContentTemplateContainer.FindControl("txbContactFax")).Text;
    p.ProfileInfo.Preferences.Newsletter = ((DropDownList)CreateUserWizard1.CreateUserStep.ContentTemplateContainer.FindControl("ddlNewsletter")).SelectedValue;

    // Save profile - must be done since we explicitly created it
    p.Save();

}

此构建并运行正常,但以下行始终返回null。

wProfile p = wProfile.GetProfile(Membership.GetUser().UserName);

我不确定是什么问题?我也尝试了link底部的示例,但没有成功

编辑:

我已经阅读了很多链接并尝试了几种解决方案,但我的专业知识是这个领域并不是很好。我想我需要一些语法帮助才能让它运行起来,我会尽可能地提供赏金。

编辑: 如果我附加我尝试将其转换为WAP的当前状态,这可能会有所帮助。 http://www.mediafire.com/?ouabeoxwu75b52c

4 个答案:

答案 0 :(得分:3)

您的Membership.GetUser()返回null,这可能是由以下原因引起的:

  1. 您未经过身份验证,Membership.GetUser()仅适用于经过身份验证的用户。否则,它将返回null。验证您是否正在处理页面上经过身份验证的请求调用User.Identity.IsAuthenticated。如果您有经过身份验证的请求,但Membership.GetUser()仍然返回null,则表示在成员资格数据源中找不到与经过身份验证的用户关联的用户名。使用“User.Identity.Name”验证经过身份验证的用户的用户名。

  2. 如果您正在调用带有用户名的Membership.GetUser()重载之一并且它返回null,那么该成员数据源中不存在该用户(或者我们有一个错误)。轻松验证这一点的一种方法是尝试使用相同用户名的Membership.CreateUser()。如果由于用户重复而没有引发错误,那么您就知道该用户从未存在过。

  3. Membership.GetUser()应该从未为匿名用户工作过。在处理此案件时,会员资格没有内置支持。

  4. 来源:MSDN Forum

    但是,如果Membership.GetUser()返回null,我会改变这一行:

    wProfile p = wProfile.GetProfile(Membership.GetUser().UserName);
    

    if (Membership.GetUser() != null)
    {
        wProfile p = wProfile.GetProfile(Membership.GetUser().UserName);
    } else {
        // do whatever you want to do when the user is null, maybe some error or create the user
    }
    

答案 1 :(得分:3)

一个问题是您正在调用Membership.GetUser()重载,该重载将加载当前登录用户的用户详细信息。由于这似乎是用户可以注册他/她自己的页面的一部分,这意味着代码运行时当前没有登录用户。

您应该将该行更改为:

wProfile p = wProfile.GetProfile(Membership.GetUser(CreateUserWizard1.UserName).UserName);

假设您已经在此时创建了用户。或者更简单:

wProfile p = wProfile.GetProfile(CreateUserWizard1.UserName);

但我建议您也更改wProfile类,以便GetProfile(string userName)加载并返回用户名为userName的用户的个人资料。然后添加一个明确的CreateProfile(string userName)方法,您可以在创建配置文件时使用该方法。在我看来,创建一个新的配置文件作为一个名为GetProfile的方法的副作用并不是一个好主意。

代码可以是:

wProfile p = wProfile.CreateProfile(CreateUserWizard1.UserName);

答案 2 :(得分:2)

我完成了你的解决方案和所有评论。对我来说,尽管有一件小事,一切看起我注意到web.config中的个人资料元素不使用inherits属性(http://msdn.microsoft.com/en-us/library/ms164644(v=vs.85).aspx)。尝试使用值添加此类属性,该值是自定义类型的类型引用,该自定义类型派生自特定示例中的ProfileBase抽象类 - wProfile,如下所示:

<profile defaultProvider="MyCMSTableProfileProvider" 
         automaticSaveEnabled="false" 
         enabled="true" 
         inherits="myWSAT.controls.wProfile">

如果在此更改后某些内容被破坏,请对您的自定义提供商进行相应的更改。更重要的是,我发现了您可能感兴趣的类似帖子:How to assign Profile values?

答案 3 :(得分:0)

为了完整性,如果有人遇到类似的困难,以下是我将示例网站转换为Web应用程序项目的确切步骤

1)使用此walkthrough进行主转换。这里的关键点是只将.dll复制到新的项目bin文件夹,然后首先复制App_Code文件夹并转换为Web应用程序,然后再添加其他页面和文件夹。

2)当项目转换为Web应用程序时,某些名称空间,类和类型名称可能无法正确更新或根据项目名称而有所不同。通常,后面的代码会正确更新,但Web.Config TypeNames却没有。我遇到的主要问题是theme classessp_cpanelTableAdapters,其中有大约20个要更改的类型名称,例如更改

class admin_themes_default_defaultclass admin_themes_dark_default

TypeName="sp_cpanelTableAdapters.admin_HintsTableAdapter"TypeName="myWSAT_WAP.xsd.sp_cpanelTableAdapters.admin_HintsTableAdapter"

3)以下显示了在此Web应用程序中使用Profiles的代码。我只在用户控件membership-info.ascx中显示了profileCommon的替换代码 - 所有其他用户控件中的代码几乎相同,所以我不再重复。 根据Jaroslaw Waliszko的回答,请注意Web.Config现在包含inherits="myWSAT_WAP.controls.wProfile",现在使用标准配置文件提供程序而不是自定义提供程序。

//ProfileInfo.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

Namespace myWSAT_WAP.Controls
{
    [Serializable]
    public class Personal
    {
        public string FirstName { get; set; }
        public string LastName { get; set; }
        public string Gender { get; set; }
        public DateTime BirthDate { get; set; }
        public string Occupation { get; set; }
        public string Website { get; set; }
    }

    [Serializable]
    public class Address
    {
        public string Country { get; set; }
        public string Address1 { get; set; }
        public string AptNumber { get; set; }
        public string City { get; set; }
        public string State { get; set; }
        public string PostalCode { get; set; }
    }

    [Serializable]
    public class Contacts
    {
        public string DayPhone { get; set; }
        public string DayPhoneExt { get; set; }
        public string EveningPhone { get; set; }
        public string EveningPhoneExt { get; set; }
        public string CellPhone { get; set; }
        public string Fax { get; set; }

    }

    [Serializable]
    public class Company
    {
        public string CompanyName { get; set; }
        public string Address { get; set; }
        public string City { get; set; }
        public string State { get; set; }
        public string PostalCode { get; set; }
        public string Phone { get; set; }
        public string Fax { get; set; }
        public string Website { get; set; }

    }

    [Serializable]
    public class Preferences
    {
        public string Culture { get; set; }
        public string Newsletter { get; set; }

    }

    [Serializable]
    public class ProfileInfo
    {
        public Personal Personal { get; set; }
        public Address Address { get; set; }
        public Contacts Contacts { get; set; }
        public Company Company { get; set; }
        public Preferences Preferences { get; set; }
    }
}


//wProfile.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Web;
using System.Web.Profile;

Namespace myWSAT_WAP.Controls
{
    public class wProfile : ProfileBase
    {
        public ProfileInfo ProfileInfo
        {
            get { return (ProfileInfo)GetPropertyValue("ProfileInfo"); }
        }

        public static wProfile GetProfile()
        {
            return (wProfile)HttpContext.Current.Profile;
        }

        public static wProfile GetProfile(string userName)
        {
            return (wProfile)Create(userName);
        }
    }
}

//Web.config
    <profile defaultProvider="MyCMSSqlProfileProvider" automaticSaveEnabled="false" inherits="myWSAT_WAP.controls.wProfile">
      <providers>
        <clear/>
        <add name="MyCMSSqlProfileProvider" connectionStringName="dbMyCMSConnectionString" applicationName="MyCMS" type="System.Web.Profile.SqlProfileProvider"/>
      </providers>
      <properties>
        <group name="Personal">
          <add name="FirstName" type="String"/>
          <add name="LastName" type="String"/>
          <add name="Gender" type="String"/>
          <add name="BirthDate" type="DateTime"/>
          <add name="Occupation" type="String"/>
          <add name="Website" type="String"/>
        </group>
        <group name="Address">
          <add name="Country" type="String"/>
          <add name="Address" type="String"/>
          <add name="AptNumber" type="String"/>
          <add name="City" type="String"/>
          <add name="State" type="String"/>
          <add name="PostalCode" type="String"/>
        </group>
        <group name="Contacts">
          <add name="DayPhone" type="String"/>
          <add name="DayPhoneExt" type="String"/>
          <add name="EveningPhone" type="String"/>
          <add name="EveningPhoneExt" type="String"/>
          <add name="CellPhone" type="String"/>
          <add name="Fax" type="String"/>
        </group>
        <group name="Company">
          <add name="Company" type="String"/>
          <add name="Address" type="String"/>
          <add name="City" type="String"/>
          <add name="State" type="String"/>
          <add name="PostalCode" type="String"/>
          <add name="Phone" type="String"/>
          <add name="Fax" type="String"/>
          <add name="Website" type="String"/>
        </group>
        <group name="Preferences">
          <add name="Culture" type="String" defaultValue="en-US"/>
          <add name="Newsletter" type="String"/>
        </group>
      </properties>
    </profile>

//membership-info.ascx
    #region on page load get current profile

    protected void Page_Load(object sender, EventArgs e)
    {
        // Get Profile
        if (!Page.IsPostBack)
        {
            if (Page.User.Identity.IsAuthenticated)
            {
                // get country names from app_code folder
                // bind country names to the dropdown list
                ddlCountries.DataSource = CountryNames.CountryNames.GetCountries();
                ddlCountries.DataBind();

                // get state names from app_code folder
                // bind state names to the dropdown lists in address info and company info section
                ddlStates1.DataSource = UnitedStates.StateNames.GetStates();
                ddlStates1.DataBind();
                ddlStates2.DataSource = UnitedStates.StateNames.GetStates();
                ddlStates2.DataBind();

                // get the selected user's profile based on query string
                wProfile profile = wProfile.GetProfile();
                //profileCommon profile = Profile;

                // Subscriptions
                ddlNewsletter.SelectedValue = profile.GetProfileGroup("Preferences").GetPropertyValue("Newsletter").ToString();
                //ddlNewsletter.SelectedValue = profile.Preferences.Newsletter;

                // Personal Info
                txtFirstName.Text = profile.GetProfileGroup("Personal").GetPropertyValue("FirstName").ToString();
                txtLastName.Text = profile.GetProfileGroup("Personal").GetPropertyValue("LastName").ToString();
                ddlGenders.SelectedValue = profile.GetProfileGroup("Personal").GetPropertyValue("Gender").ToString();
                if ((DateTime)profile.GetProfileGroup("Personal").GetPropertyValue("BirthDate") != DateTime.MinValue)
                    txtBirthDate.Text = profile.GetProfileGroup("Personal").GetPropertyValue("BirthDate").ToString();
                ddlOccupations.SelectedValue = profile.GetProfileGroup("Personal").GetPropertyValue("Occupation").ToString();
                txtWebsite.Text = profile.GetProfileGroup("Personal").GetPropertyValue("Website").ToString();

                //txtFirstName.Text = profile.Personal.FirstName;
                //txtLastName.Text = profile.Personal.LastName;
                //ddlGenders.SelectedValue = profile.Personal.Gender;
                //if (profile.Personal.BirthDate != DateTime.MinValue)
                //    txtBirthDate.Text = profile.Personal.BirthDate.ToShortDateString();
                //ddlOccupations.SelectedValue = profile.Personal.Occupation;
                //txtWebsite.Text = profile.Personal.Website;

                // Address Info
                ddlCountries.SelectedValue = profile.GetProfileGroup("Address").GetPropertyValue("Country").ToString();
                txtAddress.Text = profile.GetProfileGroup("Address").GetPropertyValue("Address").ToString();
                txtAptNumber.Text = profile.GetProfileGroup("Address").GetPropertyValue("AptNumber").ToString();
                txtCity.Text = profile.GetProfileGroup("Address").GetPropertyValue("City").ToString();
                ddlStates1.SelectedValue = profile.GetProfileGroup("Address").GetPropertyValue("State").ToString();
                txtPostalCode.Text = profile.GetProfileGroup("Address").GetPropertyValue("PostalCode").ToString();

                //ddlCountries.SelectedValue = profile.Address.Country;
                //txtAddress.Text = profile.Address.Address;
                //txtAptNumber.Text = profile.Address.AptNumber;
                //txtCity.Text = profile.Address.City;
                //ddlStates1.SelectedValue = profile.Company.State;
                //txtPostalCode.Text = profile.Address.PostalCode;

                // Contact Info
                txtDayTimePhone.Text = profile.GetProfileGroup("Contacts").GetPropertyValue("DayPhone").ToString();
                txtDayTimePhoneExt.Text = profile.GetProfileGroup("Contacts").GetPropertyValue("DayPhoneExt").ToString();
                txtEveningPhone.Text = profile.GetProfileGroup("Contacts").GetPropertyValue("EveningPhone").ToString();
                txtEveningPhoneExt.Text = profile.GetProfileGroup("Contacts").GetPropertyValue("EveningPhoneExt").ToString();
                txtCellPhone.Text = profile.GetProfileGroup("Contacts").GetPropertyValue("CellPhone").ToString();
                txtHomeFax.Text = profile.GetProfileGroup("Contacts").GetPropertyValue("Fax").ToString();

                //txtDayTimePhone.Text = profile.Contacts.DayPhone;
                //txtDayTimePhoneExt.Text = profile.Contacts.DayPhoneExt;
                //txtEveningPhone.Text = profile.Contacts.EveningPhone;
                //txtEveningPhoneExt.Text = profile.Contacts.EveningPhoneExt;
                //txtCellPhone.Text = profile.Contacts.CellPhone;
                //txtHomeFax.Text = profile.Contacts.Fax;

                // Company Info
                txbCompanyName.Text = profile.GetProfileGroup("Company").GetPropertyValue("Company").ToString();
                txbCompanyAddress.Text = profile.GetProfileGroup("Company").GetPropertyValue("Address").ToString();
                txbCompanyCity.Text = profile.GetProfileGroup("Company").GetPropertyValue("City").ToString();
                ddlStates2.SelectedValue = profile.GetProfileGroup("Company").GetPropertyValue("State").ToString();
                txbCompanyZip.Text = profile.GetProfileGroup("Company").GetPropertyValue("PostalCode").ToString();
                txbCompanyPhone.Text = profile.GetProfileGroup("Company").GetPropertyValue("Phone").ToString();
                txbCompanyFax.Text = profile.GetProfileGroup("Company").GetPropertyValue("Fax").ToString();
                txbCompanyWebsite.Text = profile.GetProfileGroup("Company").GetPropertyValue("Website").ToString();

                //txbCompanyName.Text = profile.Company.Company;
                //txbCompanyAddress.Text = profile.Company.Address;
                //txbCompanyCity.Text = profile.Company.City;
                //ddlStates2.SelectedValue = profile.Company.State;
                //txbCompanyZip.Text = profile.Company.PostalCode;
                //txbCompanyPhone.Text = profile.Company.Phone;
                //txbCompanyFax.Text = profile.Company.Fax;
                //txbCompanyWebsite.Text = profile.Company.Website;

                // Subscriptions
                ddlNewsletter.SelectedValue = profile.GetProfileGroup("Preferences").GetPropertyValue("Newsletter").ToString();

                //ddlNewsletter.SelectedValue = profile.Preferences.Newsletter;
            }
        }
    }

    #endregion

    #region Update current Profile Sub

    public void SaveProfile()
    {
        if (Page.User.Identity.IsAuthenticated)
        {
            // get the selected user's profile
            wProfile profile = wProfile.GetProfile();
            //ProfileCommon profile = Profile;

            // Personal Info
            profile.GetProfileGroup("Personal").SetPropertyValue("FirstName", txtFirstName.Text);
            profile.GetProfileGroup("Personal").SetPropertyValue("LastName", txtLastName.Text);
            profile.GetProfileGroup("Personal").SetPropertyValue("Gender", ddlGenders.SelectedValue);
            if (txtBirthDate.Text.Trim().Length > 0)
                profile.GetProfileGroup("Personal").SetPropertyValue("BirthDate", DateTime.Parse(txtBirthDate.Text));
            profile.GetProfileGroup("Personal").SetPropertyValue("Occupation", ddlOccupations.SelectedValue);
            profile.GetProfileGroup("Personal").SetPropertyValue("Website", txtWebsite.Text);

            //profile.Personal.FirstName = txtFirstName.Text;
            //profile.Personal.LastName = txtLastName.Text;
            //profile.Personal.Gender = ddlGenders.SelectedValue;
            //if (txtBirthDate.Text.Trim().Length > 0)
            //    profile.Personal.BirthDate = DateTime.Parse(txtBirthDate.Text);
            //profile.Personal.Occupation = ddlOccupations.SelectedValue;
            //profile.Personal.Website = txtWebsite.Text;

            // Address Info
            profile.GetProfileGroup("Address").SetPropertyValue("Country", ddlCountries.SelectedValue);
            profile.GetProfileGroup("Address").SetPropertyValue("Address", txtAddress.Text);
            profile.GetProfileGroup("Address").SetPropertyValue("AptNumber", txtAptNumber.Text);
            profile.GetProfileGroup("Address").SetPropertyValue("City", txtCity.Text);
            profile.GetProfileGroup("Address").SetPropertyValue("State", ddlStates1.Text);
            profile.GetProfileGroup("Address").SetPropertyValue("PostalCode", txtPostalCode.Text);

            //profile.Address.Country = ddlCountries.SelectedValue;
            //profile.Address.Address = txtAddress.Text;
            //profile.Address.AptNumber = txtAptNumber.Text;
            //profile.Address.City = txtCity.Text;
            //profile.Address.State = ddlStates1.Text;
            //profile.Address.PostalCode = txtPostalCode.Text;

            // Contact Info
            profile.GetProfileGroup("Contacts").SetPropertyValue("DayPhone", txtDayTimePhone.Text);
            profile.GetProfileGroup("Contacts").SetPropertyValue("DayPhoneExt", txtDayTimePhoneExt.Text);
            profile.GetProfileGroup("Contacts").SetPropertyValue("EveningPhone", txtEveningPhone.Text);
            profile.GetProfileGroup("Contacts").SetPropertyValue("EveningPhoneExt", txtEveningPhoneExt.Text);
            profile.GetProfileGroup("Contacts").SetPropertyValue("CellPhone", txtCellPhone.Text);
            profile.GetProfileGroup("Contacts").SetPropertyValue("Fax", txtHomeFax.Text);

            //profile.Contacts.DayPhone = txtDayTimePhone.Text;
            //profile.Contacts.DayPhoneExt = txtDayTimePhoneExt.Text;
            //profile.Contacts.EveningPhone = txtEveningPhone.Text;
            //profile.Contacts.EveningPhoneExt = txtEveningPhoneExt.Text;
            //profile.Contacts.CellPhone = txtCellPhone.Text;
            //profile.Contacts.Fax = txtHomeFax.Text;

            // Company Info
            profile.GetProfileGroup("Company").SetPropertyValue("Company", txbCompanyName.Text);
            profile.GetProfileGroup("Company").SetPropertyValue("Address", txbCompanyAddress.Text);
            profile.GetProfileGroup("Company").SetPropertyValue("City", txbCompanyCity.Text);
            profile.GetProfileGroup("Company").SetPropertyValue("State", ddlStates2.SelectedValue);
            profile.GetProfileGroup("Company").SetPropertyValue("PostalCode", txbCompanyZip.Text);
            profile.GetProfileGroup("Company").SetPropertyValue("Phone", txbCompanyPhone.Text);
            profile.GetProfileGroup("Company").SetPropertyValue("Fax", txbCompanyFax.Text);
            profile.GetProfileGroup("Company").SetPropertyValue("Website", txbCompanyWebsite.Text);

            //profile.Company.Company = txbCompanyName.Text;
            //profile.Company.Address = txbCompanyAddress.Text;
            //profile.Company.City = txbCompanyCity.Text;
            //profile.Company.State = ddlStates2.SelectedValue;
            //profile.Company.PostalCode = txbCompanyZip.Text;
            //profile.Company.Phone = txbCompanyPhone.Text;
            //profile.Company.Fax = txbCompanyFax.Text;
            //profile.Company.Website = txbCompanyWebsite.Text;

            // Subscriptions
            profile.GetProfileGroup("Preferences").SetPropertyValue("Newsletter", ddlNewsletter.SelectedValue);

            //profile.Preferences.Newsletter = ddlNewsletter.SelectedValue;

            // this is what we will call from the button click
            // to save the user's profile
            profile.Save();
        }
    }

    #endregion