Преобразование сайта с профилями в проект веб-приложения
Я пытаюсь преобразовать существующий веб-сайт в проект веб-приложения, и у меня большие проблемы с получением профилей для работы.
Пример 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()
возвращает ноль, это может быть вызвано:
Вы не аутентифицированы,
Membership.GetUser()
будет работать только для аутентифицированных пользователей. В противном случае он вернет ноль. Чтобы убедиться, что вы имеете дело с запросом аутентифицированного вызоваUser.Identity.IsAuthenticated
на странице. Если у вас есть аутентифицированный запрос, ноMembership.GetUser()
все еще возвращает ноль, то это означает, что имя пользователя, связанное с аутентифицированным пользователем, не может быть найдено в источнике данных Membership. Проверьте имя пользователя аутентифицированного пользователя с помощью "User.Identity.Name".Если вы звоните один из
Membership.GetUser()
перегрузки, которые принимают имя пользователя и возвращают ноль, тогда этот пользователь не существует в источнике данных Membership (или у нас есть ошибка). Один из способов легко убедиться в этом - попробоватьMembership.CreateUser()
с тем же именем пользователя. Если это не выдает ошибку из-за дубликата пользователя, то вы знаете, что пользователь никогда не существовал.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