ProfileBase Costruttore

Definizione

Crea un'istanza della classe ProfileBase.

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

Eccezioni

L'attributo enabled della sezione profile del file Web.config è false.

Non è stato possibile creare un tipo di proprietà specificato nella sezione profile del file Web.config.

-oppure-

L'attributo allowAnonymous di una proprietà nella sezione profile del file Web.config è impostato su true e l'attributo enabled dell'elemento <anonymousIdentification> è impostato su false.

-oppure-

L'attributo serializeAs di una proprietà nella sezione profile del file Web.config è impostato su Binary e la proprietà IsSerializable di type specificato restituisce false.

-oppure-

Non è stato possibile trovare il nome di un provider specificato mediante l'attributo provider di una proprietà del profilo nell'insieme Providers.

-oppure-

Non è stato possibile trovare il type specificato per una proprietà del profilo.

-oppure-

Una proprietà del profilo è stata specificata con un nome corrispondente a una proprietà nella classe base specificata nell'attributo inherits della sezione profile.

Esempio

Il file di Web.config seguente specifica un profilo utente che contiene una ZipCode proprietà di tipo string e una RecentSearchList proprietà di tipo StringCollection. La proprietà generata Profile dell'oggetto corrente HttpContext avrà funzioni di accesso fortemente tipizzate per ognuna delle proprietà specificate.

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

La pagina di ASP.NET seguente legge e imposta la ZipCode proprietà specificata per il profilo utente.

Importante

Questo esempio contiene una casella di testo che accetta l'input dell'utente, che rappresenta una potenziale minaccia per la sicurezza. Per impostazione predefinita, le pagine Web ASP.NET verificano che l'input dell'utente non includa script o elementi HTML. Per altre informazioni, vedere Cenni preliminari sugli attacchi tramite script.

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

Commenti

ASP.NET usa la ProfileBase classe per creare la classe usata per il profilo utente. Quando viene avviata un'applicazione con il profilo utente abilitato, ASP.NET crea una nuova classe di tipo ProfileCommon, che eredita dalla ProfileBase classe . Le funzioni di accesso fortemente tipizzate vengono aggiunte alla ProfileCommon classe per ogni proprietà definita nella sezione di configurazione del profilo . Le funzioni di accesso fortemente tipizzate della ProfileCommon classe chiamano rispettivamente i GetPropertyValue metodi e SetPropertyValue della ProfileBase classe base per recuperare e impostare i valori delle proprietà del profilo. Un'istanza della ProfileCommon classe viene impostata come valore della Profile proprietà per l'applicazione ASP.NET.

Nota

È possibile eseguire l'override della classe di base utilizzata per generare la classe archiviata nella Profile proprietà usando l'attributo inherits della sezione del profilo del file di configurazione. In questo caso si specifica una classe personalizzata che eredita dalla ProfileBase classe base.

Questo costruttore non deve essere usato dal codice dell'applicazione. Per creare un'istanza di un profilo utente, usare il Create metodo .

Si applica a

Vedi anche