ProfileBase 建構函式
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
建立 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,而且所指定 type
的 IsSerializable 屬性 (Property) 傳回 false
。
-或-
在 Providers 集合中找不到使用設定檔屬性 (Property) 之 provider
屬性 (Attribute) 指定的提供者名稱。
-或-
找不到指定給設定檔中某個屬性的 type
。
-或-
指定設定檔屬性所使用的名稱,符合在 profile 區段 inherits
屬性中所指定基底類別上的屬性名稱。
範例
下列 Web.config 檔案會指定使用者配置檔,其中包含 ZipCode
型 string
別的屬性和 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基類的 ProfileBase 和 SetPropertyValue 方法,分別擷取和設定配置檔屬性值。 類別 ProfileCommon
的實例會設定為 Profile ASP.NET 應用程式的 屬性值。
注意
您可以使用組態檔之設定檔區段的 屬性覆寫用來產生屬性inherits
中Profile儲存的類別的基類。 在此情況下,您會指定繼承自基類的 ProfileBase 自定義類別。
此建構函式並非用於應用程式程序代碼。 若要建立使用者配置檔的實例,請使用 Create 方法。