共用方式為


ProfileBase 建構函式

定義

建立 ProfileBase 類別的執行個體。

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

例外狀況

Web.config 檔案 profile 區段的 enabled 屬性為 false

無法建立在 Web.config 檔案 profile 區段中指定的屬性類型。

-或-

Web.config 檔案 profile 區段中屬性 (Property) 的 allowAnonymous 屬性 (Attribute) 設定為 true,而且 <anonymousIdentification> 元素的 enabled 屬性設定為 false

-或-

Web.config 檔案 profile 區段中屬性 (Property) 的 serializeAs 屬性 (Attribute) 設定為 Binary,而且所指定 typeIsSerializable 屬性 (Property) 傳回 false

-或-

Providers 集合中找不到使用設定檔屬性 (Property) 之 provider 屬性 (Attribute) 指定的提供者名稱。

-或-

找不到指定給設定檔中某個屬性的 type

-或-

指定設定檔屬性所使用的名稱,符合在 profile 區段 inherits 屬性中所指定基底類別上的屬性名稱。

範例

下列 Web.config 檔案會指定使用者配置檔,其中包含 ZipCodestring 別的屬性和 RecentSearchList 類型的 StringCollection屬性。 目前 HttpContext 產生的Profile屬性會針對每個指定的屬性具有強型別存取子。

<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 Web 網頁會驗證使用者輸入未包含指令碼或 HTML 項目。 如需詳細資訊,請參閱 Script Exploits Overview (指令碼攻擊概觀)。

<%@ 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基類的 ProfileBaseSetPropertyValue 方法,分別擷取和設定配置檔屬性值。 類別 ProfileCommon 的實例會設定為 Profile ASP.NET 應用程式的 屬性值。

注意

您可以使用組態檔之設定檔區段的 屬性覆寫用來產生屬性inheritsProfile儲存的類別的基類。 在此情況下,您會指定繼承自基類的 ProfileBase 自定義類別。

此建構函式並非用於應用程式程序代碼。 若要建立使用者配置檔的實例,請使用 Create 方法。

適用於

另請參閱