網站是爲用戶的重複訪問而設計的。個性化允許站點記住用戶身份和其他信息細節,並爲每個用戶呈現個性化的環境。
NET提供個性化網站的服務,以滿足特定客戶的口味和偏好。
Understanding Profiles
ASP.NET個性化服務基於用戶配置文件。用戶配置文件定義站點所需的用戶信息類型。例如,姓名、年齡、地址、出生日期和電話號碼。
此信息在應用程式的web.config文件中定義,ASP.NET運行時將讀取並使用它。此工作由個性化設置提供程序完成。
從用戶數據獲得的用戶配置文件存儲在由ASP.NET創建的默認資料庫中。您可以創建自己的資料庫來存儲配置文件。配置文件數據定義存儲在配置文件web.config中。
Example
讓我們創建一個示例站點,讓應用程式記住用戶名、地址、出生日期等用戶詳細信息。將配置文件詳細信息添加到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"/> <add name="State"/> <add name="Zipcode"/> </group> </properties> </profile> </system.web> </configuration>
當在web.config文件中定義配置文件時,可以通過在當前HttpContext中找到的profile屬性使用該配置文件,也可以通過page使用。
添加文本框以接受配置文件中定義的用戶輸入,並添加用於提交數據的按鈕:
更新頁面加載以顯示配置文件信息:
using System; using System.Data; using System.Configuration; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls; public partial class _Default : System.Web.UI.Page { 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.txtstate.Text = pc.Address.State; this.txtzip.Text = pc.Address.Zipcode; this.Calendar1.SelectedDate = pc.Birthday; } } } }
爲提交按鈕編寫以下處理程序,以便將用戶數據保存到配置文件中:
protected void btnsubmit_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.Address.State = this.txtstate.Text; pc.Address.Zipcode = this.txtzip.Text; pc.Birthday = this.Calendar1.SelectedDate; pc.Save(); } }
第一次執行頁面時,用戶需要輸入信息。但是,下次將自動加載用戶詳細信息。
Attributes for the <add> Element
除了我們使用的name和type屬性之外,<add>元素還有其他屬性。下表說明了其中一些屬性:
Attributes | Description |
---|---|
name | The name of the property. |
type | By default the type is string but it allows any fully qualified class name as data type. |
serializeAs | The format to use when serializing this value. |
readOnly | A read only profile value cannot be changed, by default this property is false. |
defaultValue | A default value that is used if the profile does not exist or does not have information. |
allowAnonymous | A Boolean value indicating whether this property can be used with the anonymous profiles. |
Provider | The profiles provider that should be used to manage just this property. |
Anonymous Personalization
匿名個性化允許用戶在識別自己之前對網站進行個性化設置。例如,Amazon.com允許用戶在登錄之前在購物車中添加商品。要啓用此功能,web.config文件可以配置爲: