網站是為用戶的重複訪問而設計的。個人化允許一個網站記住用戶標識和其他資訊細節,並且它給每個用戶提供了一個個人的環境。
ASP.NET 為滿足特性客戶的品味和喜好而個人化一個網站提供服務。
ASP.NET 個人化服務是基於使用者的特徵檔案。使用者特徵檔案定義了該網站需要使用者的資訊。例如,名字,年齡,地址,出生日期和手機號碼。
這個資訊被定義在應用程式的web.config 檔案中並且ASP.NET 運行時間閱讀並使用它。這個工作由個人化提供者所完成。
使用者資料所含有的使用者特徵檔案儲存在預設的ASP.NET 所建立的資料庫中。你可以建立你自己的資料庫來儲存特徵文件。特徵檔案資料定義被儲存在設定檔web.config 中。
讓我們創建一個樣本網站,在那裡我們想要我們的應用程式記住用戶細節,像名字,地址,出生日期等。在web.config 檔案中以 元素新增特徵文件細節。
<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 屬性使用並且透過頁面取得。
新增text box 來取得特徵檔中定義的使用者輸入,新增一個button 來提交資料:
更新Page_load 來展示特徵檔資訊:
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 = thisress.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(); }}
當頁面第一次執行時,使用者需要輸入資訊。但是,下一次用戶的細節將自動加載。
除了我們已經使用過的名字和類型屬性,元素還有其它屬性。以下的表格展示了這些屬性中的一些:
屬性 | 描述 |
---|---|
name | 屬性的名字。 |
type | 類型預設是string 但是它允許任何完全的類別名稱作為資料類型。 |
serializeAS | 當序列化這個值時所使用的格式。 |
readOnly | 只讀的特徵檔值不能被改變,這個屬性預設是false。 |
defaultValue | 一個預設的值,如果特徵檔案不存在或沒有資訊的話它被使用。 |
allowAnonymous | 一個指示這個屬性是否能和匿名檔案使用的布林值。 |
Provider | 應該被用來管理這個屬性的特徵文件提供者。 |
匿名個人化允許用戶在標識它們自己之前個性化網站。例如,Amazon.com 允許用戶在登入前在購物車中添加物品。為了啟用此功能,web.config 檔案可以配置成以下:
<anonymousIdentification enabled ="true" cookieName=".ASPXANONYMOUSUSER" cookieTimeout="120000" cookiePath="/" cookieRequiresSSL="false" cookieSlidingExpiration="true" cookieprotection="Encryption" coolieless="UseDeviceProfile"/>