Sdílet prostřednictvím


ProfileBase Konstruktor

Definice

Vytvoří instanci objektu ProfileBase třídy.

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

Výjimky

Atribut enabled oddílu profilu souboru Web.config je false.

Typ vlastnosti zadaný v části profilu souboru Web.config nelze vytvořit.

nebo

Atribut allowAnonymous vlastnosti v části profilu souboru Web.config je nastaven na true a enabled atribut <anonymousIdentification> element je nastaven na false.

nebo

Atribut serializeAs vlastnosti v části profilu souboru Web.config je nastaven na Binary a IsSerializable vlastnost zadaného type návratu false.

nebo

Název zprostředkovatele zadaného pomocí provider atributu vlastnosti profilu nebyl v kolekci Providers nalezen.

nebo

Zadaná type vlastnost profilu nebyla nalezena.

nebo

Vlastnost profilu byla zadána s názvem, který odpovídá názvu vlastnosti základní třídy zadané v inherits atributu oddílu profilu .

Příklady

Následující Web.config soubor určuje profil uživatele, který obsahuje ZipCode vlastnost typu string a RecentSearchList vlastnost typu StringCollection. Vygenerovaná Profile vlastnost aktuálního HttpContext objektu bude mít přístupové objekty silného typu pro každou ze zadaných vlastností.

<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>

Následující ASP.NET stránce přečte a nastaví vlastnost zadanou ZipCode pro profil uživatele.

Důležité

Tento příklad obsahuje textové pole, které přijímá vstup uživatele, což je potenciální bezpečnostní hrozba. Ve výchozím nastavení ASP.NET webové stránky ověřují, že vstup uživatele neobsahuje skripty ani elementy HTML. Další informace naleznete v tématu Přehled zneužití skriptů.

<%@ 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>

Poznámky

ASP.NET používá ProfileBase třídu k vytvoření třídy použité pro profil uživatele. Když je spuštěna aplikace s povoleným profilem uživatele, ASP.NET vytvoří novou třídu typu ProfileCommon, která dědí z ProfileBase třídy. Přístupové objekty silného ProfileCommon typu se přidají do třídy pro každou vlastnost definovanou v oddílu konfigurace profilu . Přístupové objekty třídy silného ProfileCommonProfileBase typu volají GetPropertyValue a SetPropertyValue metody základní třídy k načtení a nastavení hodnot vlastností profilu v uvedeném pořadí. Instance ProfileCommon třídy je nastavena jako hodnota Profile vlastnosti pro ASP.NET aplikace.

Poznámka:

Základní třída používaná k vygenerování třídy uložené ve Profile vlastnosti lze přepsat pomocí inherits atributu oddílu profilu konfiguračního souboru. V tomto případě byste zadali vlastní třídu, která dědí ze ProfileBase základní třídy.

Tento konstruktor není určen k použití z kódu aplikace. K vytvoření instance profilu uživatele použijte metodu Create .

Platí pro

Viz také