Поделиться через


ProfileBase Конструктор

Определение

Создает экземпляр класса ProfileBase.

public:
 ProfileBase();
public ProfileBase ();
Public Sub New ()

Исключения

Атрибут enabled раздела profile файла Web.config имеет значение false.

Не удалось создать тип свойства, заданный в разделе profile файла Web.config.

-или-

Атрибут allowAnonymous свойства в разделе profile файла Web.config имеет значение true, а атрибут enabled элемента <anonymousIdentification> имеет значение false.

-или-

Атрибут serializeAs свойства в разделе profile файла Web.config имеет значение Binary, а свойство IsSerializable заданного типа type возвращает false.

-или-

Имя поставщика, заданное с помощью атрибута provider свойства профиля не удалось найти в коллекции Providers.

-или-

Не удалось найти тип type, заданный для свойства профиля.

-или-

Свойство профиля было задано с именем, совпадающим с именем свойства базового класса, указанного в атрибуте inherits раздела profile.

Примеры

В следующем файле Web.config указывается профиль пользователя, содержащий ZipCode свойство типа string и RecentSearchList свойство типа StringCollection. Profile Созданное свойство текущего HttpContext объекта будет иметь строго типизированные методы доступа для каждого из указанных свойств.

<configuration>
   <connectionStrings>
       <add name="SqlServices" connectionString="Data Source=localhost;Integrated Security=SSPI;Initial Catalog=aspnetdb;" />
   </connectionStrings>

  <system.web>
   <anonymousIdentification enabled="true" />

   <profile defaultProvider="SqlProvider" >
     <providers>
       <add
         name="SqlProvider"
         connectionStringName="SqlServices"
         applicationName="ProfileBaseApplication"
         type="System.Web.Profile.SqlProfileProvider" />
     </providers>

     <properties>
       <add name="ZipCode" allowAnonymous="true" />
       <add name="RecentSearchList"
            type="System.Collections.Specialized.StringCollection"
            serializeAs="Xml"
            allowAnonymous="true" />
      </properties>
    </profile>
   </system.web>
</configuration>

Следующая страница ASP.NET считывает и задает ZipCode свойство, указанное для профиля пользователя.

Важно!

В этом примере содержится текстовое поле, принимающее введенные пользователем данные, что является потенциальной угрозой безопасности. По умолчанию данные, вводимые пользователем на веб-страницах ASP.NET, проверяются на наличие скриптов и HTML-элементов. Дополнительные сведения см. в разделе Общие сведения об использовании сценариев.

<%@ Page Language="C#" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">

public void Page_PreRender()
{
  if (Profile.ZipCode == null)
  {
    PersonalizePanel.Visible = false;
    GetZipCodePanel.Visible = true;
  }
  else
  {
    ZipCodeLabel.Text = Profile.ZipCode;

    // Get personalized information for zip code here.

    PersonalizePanel.Visible = true;
    GetZipCodePanel.Visible = false;
  }
}

public void ChangeZipCode_OnClick(object sender, EventArgs args)
{
  ZipCodeTextBox.Text = Profile.ZipCode;
  Profile.ZipCode = null;

  PersonalizePanel.Visible = false;
  GetZipCodePanel.Visible = true;
}

public void EnterZipCode_OnClick(object sender, EventArgs args)
{
  Profile.ZipCode = ZipCodeTextBox.Text;
}

</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>Home Page</title>
</head>
<body>

<form id="form1" runat="server">
  <table border="1" cellpadding="2" cellspacing="2">
    <tr>
      <td>
        <asp:Panel id="PersonalizePanel" runat="Server" Visible="False">
          Information for Zip Code: <asp:Label id="ZipCodeLabel" Runat="Server" /><br />
          <!-- Information for Zip Code here. -->
          <br />
          <asp:LinkButton id="ChangeZipCodeButton" Runat="Server" Text="Change Your Zip Code"
                          OnClick="ChangeZipCode_OnClick" />
        </asp:Panel>
        <asp:Panel id="GetZipCodePanel" runat="Server" Visible="False">
          You can personalize this page by entering your Zip Code: 
          <asp:TextBox id="ZipCodeTextBox" Columns="5" MaxLength="5" runat="Server" />
          <asp:LinkButton id="EnterZipCodeButton" Runat="Server" Text="Go"
                          OnClick="EnterZipCode_OnClick" />
        </asp:Panel>
      </td>
    </tr>
  </table>
</form>

</body>
</html>
<%@ Page Language="VB" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">

Public Sub Page_PreRender()

  If Profile.ZipCode = Nothing Then
    PersonalizePanel.Visible = False
    GetZipCodePanel.Visible = True
  Else
    ZipCodeLabel.Text = Profile.ZipCode

    ' Get personalized information for zip code here.

    PersonalizePanel.Visible = True
    GetZipCodePanel.Visible = False
  End If

End Sub

Public Sub ChangeZipCode_OnClick(sender As Object, args As EventArgs)
  ZipCodeTextBox.Text = Profile.ZipCode
  Profile.ZipCode = Nothing

  PersonalizePanel.Visible = False
  GetZipCodePanel.Visible = True
End Sub

Public Sub EnterZipCode_OnClick(sender As Object, args As EventArgs)
  Profile.ZipCode = ZipCodeTextBox.Text
End Sub

</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>Home Page</title>
</head>
<body>

<form id="form1" runat="server">
  <table border="1" cellpadding="2" cellspacing="2">
    <tr>
      <td>
        <asp:Panel id="PersonalizePanel" runat="Server" Visible="False">
          Information for Zip Code: <asp:Label id="ZipCodeLabel" Runat="Server" /><br />
          <!-- Information for Zip Code here. -->
          <br />
          <asp:LinkButton id="ChangeZipCodeButton" Runat="Server" Text="Change Your Zip Code"
                          OnClick="ChangeZipCode_OnClick" />
        </asp:Panel>
        <asp:Panel id="GetZipCodePanel" runat="Server" Visible="False">
          You can personalize this page by entering your Zip Code: 
          <asp:TextBox id="ZipCodeTextBox" Columns="5" MaxLength="5" runat="Server" />
          <asp:LinkButton id="EnterZipCodeButton" Runat="Server" Text="Go"
                          OnClick="EnterZipCode_OnClick" />
        </asp:Panel>
      </td>
    </tr>
  </table>
</form>

</body>
</html>

Комментарии

ASP.NET использует класс для ProfileBase создания класса, используемого для профиля пользователя. При запуске приложения, для которого включен профиль пользователя, ASP.NET создает новый класс типа ProfileCommon, который наследуется от ProfileBase класса . Строго типизированные методы доступа добавляются в ProfileCommon класс для каждого свойства, определенного в разделе конфигурации профиля . Строго типизированные методы ProfileCommon доступа класса вызывают GetPropertyValue методы ProfileBase и SetPropertyValue базового класса для получения и задания значений свойств профиля соответственно. Экземпляр ProfileCommon класса задается в качестве значения Profile свойства для приложения ASP.NET.

Примечание

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

Этот конструктор не предназначен для использования из кода приложения. Чтобы создать экземпляр профиля пользователя, используйте Create метод .

Применяется к

См. также раздел