2013-08-27 7 views
5

Próbuję przekonwertować istniejący website do projektu aplikacji sieci Web i mam duże problemy z uruchomieniem profili.Przekształcanie strony internetowej z profilami w projekt aplikacji WWW

Przykładem projektu w kodzie strony jest

rejestr-z-roli-i-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> 

ale to daje błąd The type or namespace name 'ProfileCommon' could not be found (are you missing a using directive or an assembly reference?)

Stosując tę ​​example stworzyłem 2 nowe klasy

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); 
     } 
    } 
} 

a następnie zmienione rejestr-z-pełnienie ról i-profile.ascx.cs do

// 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(); 

} 

Ta kompilacja działa poprawnie, ale poniższy wiersz zawsze zwraca wartość null.

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

Nie jestem pewien, co jest nie tak? Próbowałem również przykład w dolnej części tego link bez powodzenia

EDIT:

Znam mnóstwo linków i próbowaliśmy kilka rozwiązań, ale moja wiedza jest obszar ten nie jest wielki. Sądzę, że poproszę o odrobinę pomocy w składni, żeby to działało, będę mógł zaoferować nagrodę, kiedy tylko będę mógł.

EDYCJA: Może pomóc, jeśli dołączę bieżący stan mojej próby przekonwertowania tego na WAP. http://www.mediafire.com/?ouabeoxwu75b52c

+0

Czy sprawdziłeś folder referencyjny w panelu rozwiązania, aby sprawdzić, czy jest jakieś ostrzeżenie? Może potrzebujesz pobrać bibliotekę dll z projektu źródłowego (prawdopodobnie w folderze bin), aby naprawić odniesienie – Gonzix

+0

Wszystkie odniesienia są w porządku, projekty aplikacji sieci Web nie zawierają klasy ProfileCommon, stąd powód, dla którego muszę utworzyć niestandardową klasę ProfileCommon. – user3357963

+0

Może tego właśnie potrzebujesz? http://stackoverflow.com/questions/1584507/web-application-project-how-to-use-profilecommon – Gonzix

Odpowiedz

2

przeszedłem rozwiązania i wszystkie komentarze. Dla mnie wszystko wygląda dobrze pomimo jednej drobnej rzeczy. Zauważyłem, że twój element profilu w web.config nie używa atrybutu inherits (http://msdn.microsoft.com/en-us/library/ms164644(v=vs.85).aspx). Spróbuj dodać taki atrybut z wartością, która jest punktem odniesienia typu dla typu niestandardowego, które wywodzi się od ProfileBase klasy abstrakcyjnej - wProfile w konkretnym przykładzie, jak poniżej:

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

Dokonaj odpowiednich zmian do swojego dostawcy niestandardowego jeśli coś się zepsuje po tej zmianie. Co więcej, znalazłem podobny wątek, który może Cię zainteresować: How to assign Profile values?

+0

@ooo: Cieszę się, że pomógł, a także dzięki za nagrodę! – jwaliszko

+0

nie ma problemu, utknąłem na tym przez kilka dni i to była twoja sugestia, że ​​mnie nie było. Wolałbym dać 500 punktów niż 500 funtów :). Przekształciłem teraz przykładową stronę internetową, aby wszystko w pełni działało jako WAP. Wezmę wszystkie moje kroki jutro, a to pomoże innym. – user3357963

3

Twoje Membership.GetUser() zwraca null, może to być spowodowane przez:

  1. nie są uwierzytelnione, Membership.GetUser() będzie działać tylko dla uwierzytelnionej użytkowników. W przeciwnym razie zwróci wartość null. Aby zweryfikować, że masz do czynienia z uwierzytelnionym żądaniem, zadzwoń na numer User.Identity.IsAuthenticated na stronie. Jeśli masz uwierzytelnione żądanie, ale Membership.GetUser() nadal zwraca wartość null, oznacza to, że nazwa użytkownika powiązana z uwierzytelnionym użytkownikiem nie może zostać znaleziona w źródle danych członkostwa. Zweryfikuj nazwę użytkownika uwierzytelnionego użytkownika za pomocą "User.Identity.Name".

  2. Jeśli wywołujesz jeden z przeciążeń Membership.GetUser(), który pobiera nazwę użytkownika i zwraca wartość null, to ten użytkownik nie istnieje w źródle danych członkostwa (lub mamy błąd).Jednym ze sposobów łatwej weryfikacji jest wypróbowanie wersji Membership.CreateUser() o tej samej nazwie użytkownika. Jeśli nie spowoduje to błędu z powodu duplikatu użytkownika, to wiesz, że użytkownik nigdy nie istniał.

  3. Membership.GetUser() Nigdy nie powinien był pracować dla anonimowego użytkownika. Żadna pomoc nie została wbudowana w członkostwo w celu obsługi tej sprawy.

źródło: MSDN Forum

Jednak jeśli Membership.GetUser() zwraca null whould zmienić tę linię:

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

do

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 
} 
+0

Metoda Membership.GetUser() nie zwraca wartości null. Ta część działa dobrze. – user3357963

+0

Jeśli wProfile p = wProfile.GetProfile (Membership.GetUser(). UserName); daje wyjątek nullpointer. Tylko Memberchip.GetUser() może mieć wartość NULL. Lub powinieneś mieć stacktrace z GetProfile w nim. Dodaj rejestrację, aby sprawdzić to sam. – Peter

+0

Przykro mi, ale jestem pewien, że nie ma to nic wspólnego z 'Membership.GetUser()'. Powinienem był stwierdzić, że metoda zawsze zwraca wartość null, zamiast podawać błąd zerowy wyjątek. Szczegóły członkostwa są dostępne tylko po utworzeniu i zalogowaniu użytkownika, więc Membership.GetUser() zawsze zwraca poprawnie zalogowanego użytkownika. – user3357963

3

Jednym z problemów jest to, że jesteś wywołanie przeciążenia Membership.GetUser(), które załaduje dane użytkownika dla aktualnie zalogowany użytkownik. Ponieważ wydaje się, że jest to część strony, na której użytkownik może się zarejestrować, oznacza to, że nie ma aktualnie zalogowanego użytkownika po uruchomieniu kodu.

Powinieneś raczej zmienić linię do:

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

To zakłada, że ​​utworzono już użytkownik w tym momencie. Albo prościej:

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

Ale chciałbym zaproponować Ci także zmienić klasę wProfile tak że GetProfile(string userName) byłoby załadować i wrócić do profilu użytkownika z nazwą użytkownika userName. Następnie dodaj jawną metodę CreateProfile(string userName), której możesz użyć, gdy chcesz utworzyć profil. Stworzenie nowego profilu jako efektu ubocznego metody o nazwie GetProfile nie jest, moim zdaniem, dobrym pomysłem.

Kod może następnie być:

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

Dla kompletności i jeśli ktoś napotyka podobne problemy, poniżej przedstawiono dokładne kroki, które podjąłem, aby przekształcić przykładową stronę internetową w projekt aplikacji internetowej

1) Użyj tej walkthrough do konwersji głównej. Kluczowymi punktami są tutaj TYLKO skopiowanie plików .dll do nowego folderu bin projektu, a następnie skopiowanie najpierw katalogu App_Code i przekonwertowanie na aplikację internetową przed dodaniem innych stron i folderów.

2) Kiedy projekt jest konwertowany na aplikację internetową, prawdopodobnie niektóre przestrzenie nazw, klas i nazw typów mogą nie być poprawnie aktualizowane lub różnić się w zależności od nazwy projektu.Zasadniczo kod z tyłu jest aktualizowany poprawnie, ale nazwy typu Web.Config nie. Główne z nich I napotkane były theme classes i sp_cpanelTableAdapters których było około 20 typenames się zmieniają, na przykład zmienić

class admin_themes_default_default do class admin_themes_dark_default

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

3) Poniżej przedstawiono kod, aby uzyskać Profile działające w tej aplikacji internetowej. Pokazałem tylko kod zamienny dla profiluCommon w kontrolerze użytkownika membership-info.ascx - kod jest praktycznie taki sam we wszystkich innych kontrolkach użytkownika, więc nie powtórzę. Na podstawie odpowiedzi Jarosława Waliszki, zauważ, że Web.Config zawiera teraz inherits="myWSAT_WAP.controls.wProfile" i teraz używa standardowego dostawcy profili, a nie niestandardowego operatora.

//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 
Powiązane problemy