Преобразование сайта с профилями в проект веб-приложения

Я пытаюсь преобразовать существующий веб-сайт в проект веб-приложения, и у меня большие проблемы с получением профилей для работы.

Пример codebehind в проекте веб-сайта

регистровая с-ролевой и-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?)

Используя этот пример, я создал 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();

}

Эта сборка работает нормально, но следующая строка всегда возвращает ноль.

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

Я не уверен, что не так? Я также попробовал пример внизу этой ссылки, но безуспешно

РЕДАКТИРОВАТЬ:

Я прочитал много ссылок и попробовал несколько решений, но мой опыт в этой области невелик. Думаю, я прошу немного помочь с синтаксисом, чтобы запустить его, я, возможно, предложу щедрость.

РЕДАКТИРОВАТЬ: Это может помочь, если я присоединяю текущее состояние моей попытки конвертировать это в WAP. http://www.mediafire.com/?ouabeoxwu75b52c

4 ответа

Решение

Я рассмотрел ваше решение и все комментарии. Для меня все выглядит хорошо, несмотря на одну незначительную вещь. Я заметил, что ваш элемент профиля в 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">

Внесите соответствующие изменения в свой пользовательский провайдер, если что-то будет сломано после этого изменения. Более того, я нашел похожую ветку, которая может вас заинтересовать: Как назначить значения профиля?

Одна проблема в том, что вы звоните 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);

Ваш Membership.GetUser() возвращает ноль, это может быть вызвано:

  1. Вы не аутентифицированы, Membership.GetUser() будет работать только для аутентифицированных пользователей. В противном случае он вернет ноль. Чтобы убедиться, что вы имеете дело с запросом аутентифицированного вызова User.Identity.IsAuthenticated на странице. Если у вас есть аутентифицированный запрос, но Membership.GetUser() все еще возвращает ноль, то это означает, что имя пользователя, связанное с аутентифицированным пользователем, не может быть найдено в источнике данных Membership. Проверьте имя пользователя аутентифицированного пользователя с помощью "User.Identity.Name".

  2. Если вы звоните один из Membership.GetUser() перегрузки, которые принимают имя пользователя и возвращают ноль, тогда этот пользователь не существует в источнике данных Membership (или у нас есть ошибка). Один из способов легко убедиться в этом - попробовать Membership.CreateUser() с тем же именем пользователя. Если это не выдает ошибку из-за дубликата пользователя, то вы знаете, что пользователь никогда не существовал.

  3. Membership.GetUser() никогда не должен был работать для анонимного пользователя. Никакая поддержка не была встроена в Членство для обработки этого случая.

источник: 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) Используйте это пошаговое руководство для основного преобразования. Ключевыми моментами здесь являются копирование ТОЛЬКО.dll-файлов в новую папку bin проекта, затем сначала скопируйте папку App_Code и преобразуйте ее в веб-приложение перед добавлением других страниц и папок.

2) Когда проект преобразуется в веб-приложение, вероятно, что некоторые пространства имен, классы и имена типов могут обновляться некорректно или отличаться в зависимости от имени вашего проекта. Как правило, код обновляется корректно, а имя типа Web.Config - нет. Главные, с которыми я столкнулся, были theme classes а также sp_cpanelTableAdapters из которых было около 20 typenames, чтобы изменить, например, изменить

class admin_themes_default_default в class admin_themes_dark_default

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

3) Ниже приведен код для получения профилей, работающих в этом веб-приложении. Я только показал код замены для profileCommon в пользовательском элементе управления membership-info.ascx - код практически одинаков во всех других пользовательских элементах управления, поэтому я не буду повторяться. Основываясь на ответе Ярослава Валишко, обратите внимание, что 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
Другие вопросы по тегам