2013-08-21 6 views
1

Я пытаюсь следовать примеру here для создания профиля ФУНКЦИИПравильного синтаксис метода расширения

Что расцепления меня в том, что моя web.config также содержит group name группировать свойства. Моя web.config выглядит следующим образом

web.config:

<profile defaultProvider="MyCMSSqlProfileProvider" automaticSaveEnabled="false" inherits ="TestProj.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> 

//.....etc 

я начал менять класс с именем ProfileInfo к

ProfileInfo.cs

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

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

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


} 

но знаю, что это не сработает, так как мне нужно вернуть все свойства имени группы ее облучают через wProfile

wProfile.cs:

using System.Web; 
using System.Web.Profile; 
namespace Project1.Account 
{ 
    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); 
     } 
    } 
} 

Как мне настроить ProfileInfo.cs правильно выставить профиль от всех свойств, включая имена групп?

В коде я хочу сделать что-то вроде этого

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

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

ответ

1

Вам просто нужно добавить Personal/Address как свойства для вашей модели профиля т.е.

[Serializable] 
public class Personal 
{ 
    public string FirstName { get; set; } 
    public string LastName { get; set; } 
    public string Gender { get; set; } 
    public string BirthDate { get; set; } 
    public string Occupation { get; set; } 
    public string Website { get; set; } 
} 

[Serializable] 
public class Address 
{ 
    public string Country { get; set; } 
    public string Address { 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 ProfileInfo 
{ 
    public Personal Personal { get; set; } 
    public Address Address { get; set; } 
} 

От docs

Свойства могут быть организованы в профиль пользователя как группы Недвижимость. Группы свойств профиля задаются с помощью элемента конфигурации группы . Например, различные свойства адресной информации пользователя могут быть сгруппированы вместе в группе адресов. Вы можете получить доступ к сгруппированным свойствам с помощью идентификатора группы и .

Смежные вопросы