網站設計是為使用者提供重複存取的個性化使得網站能夠記住使用者身份和其他資訊細節,並為每個使用者呈現個人化的環境。
ASP.NET提供個性化網站來為特定客戶的喜好和偏好地提供服務。
ASP.NET個性化服務基於使用者組態檔案。 使用者組態檔案定義了該網站所需使用者的資訊種類。 例如,姓名,年齡,地址,出生日期和電話號碼。
此資訊在應用程式的web.config
檔案中定義,ASP.NET執行時讀取並使用它。這項工作是由個性化提供程式來完成的。
從使用者資料中獲取的使用者組態檔案儲存在由ASP.NET建立的預設資料庫中。 您可以建立自己的資料庫來儲存組態檔案。組態檔案資料定義儲存在組態檔案web.config
中。
下面建立一個ASP.Net空網站範例專案:Personalization ,我們希望應用程式記住使用者詳細資訊,如姓名,地址,出生日期等。在web.config
檔案中的<system.web>
元素節點下新增組態檔案詳細資訊。
<configuration>
<system.web>
<profile>
<properties>
<add name="Name" type ="String"/>
<add name="Birthday" type ="System.DateTime"/>
<group name="Address">
<add name="Street"/>
<add name="City"/>
</group>
</properties>
</profile>
</system.web>
</configuration>
在web.config
檔案中定義組態檔案時,組態檔案可以通過當前HttpContext
中的Profile
屬性使用,也可以通過頁面使用。
按照組態檔案中的定義新增文字框以接受使用者輸入,並新增一個用於提交資料的按鈕:
更新Page_load
事件方法以顯示組態檔案資訊:
protected void Page_Load(object sender, EventArgs e)
{
if (!this.IsPostBack)
{
ProfileCommon pc = this.Profile.GetProfile(Profile.UserName);
if (pc != null)
{
this.txtname.Text = pc.Name;
this.txtaddr.Text = pc.Address.Street;
this.txtcity.Text = pc.Address.City;
this.Calendar1.SelectedDate = pc.Birthday;
}
}
}
為提交按鈕編寫以下處理程式,將使用者資料儲存到組態檔案中:
protected void Button1_Click(object sender, EventArgs e)
{
ProfileCommon pc = this.Profile.GetProfile(Profile.UserName);
if (pc != null)
{
pc.Name = this.txtname.Text;
pc.Address.Street = this.txtaddr.Text;
pc.Address.City = this.txtcity.Text;
pc.Birthday = this.Calendar1.SelectedDate;
pc.Save();
}
}
`
當頁面首次執行時,使用者需要輸入資訊。 但是,下次使用者的詳細資訊會自動載入。
除了已經使用的名稱和型別屬性之外,還有<add>
元素的其他屬性。下表說明了其中的一些屬性:
編號 | 屬性 | 描述 |
---|---|---|
1 | name |
屬性的名稱。 |
2 | type |
預設情況下,型別是字串,但它允許任何完全限定的類名作為資料型別。 |
3 | serializeAs |
序列化此值時使用的格式。 |
4 | readOnly |
唯讀組態檔案值不能更改,預設情況下該屬性為false 。 |
5 | defaultValue |
如果組態檔案不存在或沒有資訊,則使用預設值。 |
6 | allowAnonymous |
一個布林值,指示此屬性是否可以與匿名組態檔案一起使用。 |
7 | Provider |
應該用來管理這個屬性的組態檔案提供程式。 |
匿名個性化允許使用者在識別自己之前個性化網站。 例如,Amazon.com允許使用者在登入前新增購物車中的物品。要啟用此功能,可以將web.config
檔案組態為:
<anonymousIdentification enabled ="true" cookieName=".ASPXANONYMOUSUSER"
cookieTimeout="120000" cookiePath="/" cookieRequiresSSL="false"
cookieSlidingExpiration="true" cookieprotection="Encryption"
coolieless="UseDeviceProfile"/>