ASP.NET EC のホームへ戻る

■プロファイル

 

アマゾンなどのECサイトを訪問すると、トップページに「ようこそ、○○さん!」のようなウェルカムメッセージが表示されます。また、アマゾンから書籍などを購入するとき以前に入力した送付先が自動的に表示されます。このように、ユーザーの情報を管理するためにASP.NET 2.0では、プロファイル機能が追加されました。

 

プロファイル機能を利用すると匿名ユーザーまたは認証ユーザーの情報をデータベースに保存して、再訪問したときにプロファイルに保存されている情報を復元してWebページをパーソナライズすることが可能になります。

 

ASP.NET 1.1で同等機能を実現するには、データベースにユーザー情報を格納するテーブルを作成して独自に実装する必要がありますが、ASP.NET 2.0ではWeb.configファイルにプロファイルのプロパティを定義するだけで実現できます。

 

本システムでは、このプロファイル機能を利用してユーザーの名前、送付先などをプロファイルに保存しています。また、プロファイルには「買い物かご」なども保存することができます。

 

●匿名ユーザーのプロファイル

 

本システムでは、ユーザーが最初にWebサイトを訪問したときに、「名前」と「メールアドレス」を登録していただくようにお願いしています。ユーザーが最初に訪問したかどうか調べるには、プロファイルに名前が登録されているかどうか調べます。名前が登録されていないときは、テキストボックスにフォーカスを移動して名前を入力させます。名前が登録されているときは、「○○さん、ようこそドットネット書店へ!」のメッセージを表示します。

 

If String.IsNullOrEmpty(Profile.WelcomeName) Then

  SetFocus(txtWelcomeName)

  Panel1.Visible = True

Else

  Panel1.Visible = False

  lblMessage.Text = String.Format( _

    "{0} さん、ようこそドットネット書店へ!", Profile.WelcomeName)

End If

 

テキストボックスに名前を入力して[保存]ボタンをクリックすると、名前をプロファイルに保存します。

 

Protected Sub btnSave_Click(...) Handles btnSave.Click

  Profile.WelcomeName = txtWelcomeName.Text

  Profile.WelcomeEmail = txtWelcomeEmail.Text

End Sub

 

匿名ユーザー(まだログインしていないユーザー)の情報をプロファイルに保存するには、Web.configファイルに「anonymousIdentification enabled="true"」要素を追加します。<profile><properties>要素には、プロファイルのプロパティを追加します。匿名ユーザーのプロパティには、<add>タブに「allowAnonymous="true"」属性を追加します。

 

<anonymousIdentification enabled="true" />

<profile>

  <properties>

    <add name="WelcomeName" allowAnonymous="true"

      type="System.String"/>

    <add name="WelcomeEmail" allowAnonymous="true"

      type="System.String"/>

  </properties>

</profile>

 

プロファイルは、App_DataフォルダのASPNETDB.MDFデータベースに格納されます。プロファイルの内容を確認するには、VWD 2005のデータベースエクスプローラからASPNETDB.MDFのテーブルを表示してaspnet_Profileテーブルの右クリックから[テーブルデータの表示]を選択します。

 

 

10:「名前」がプロファイルに保存されて再訪問したときに「名前」が表示される

fig10

 

 

●プロファイルのグループ化

 

本システムでは、書籍の送付先をプロファイルに保存して再訪問したときに利用しています。送付先をプロファイルに保存するには、Web.configファイルに<profile><properties>要素を追加します。ここでは、送付先のプロパティをグループ化しています。すでに認証されているユーザーのプロファイルを保存するときは、<add>タブに「allowAnonymous="true"」属性を追加する必要ありません。

 

<profile>

  <properties>

    <group name="ShipToAddress">

      <add name="PostalCode" type="System.String"/>

      <add name="Province" type="System.String"/>

      <add name="City" type="System.String"/>

      <add name="Street" type="System.String"/>

      <add name="Name" type="System.String"/>

      <add name="Phone" type="System.String"/>

    </group>

  </properties>

</profile>

 

グループ化された送付先をプロファイルに保存するには、Profile.ShipToAddress.PostalCodeのように記述します。

 

Protected Sub btnSend_Click(...) Handles btnSend.Click

  Profile.ShipToAddress.PostalCode = txtPostalCode.Text

  Profile.ShipToAddress.Province = txtProvince.Text

  Profile.ShipToAddress.City = txtCity.Text

  Profile.ShipToAddress.Street = txtStreet.Text

  Profile.ShipToAddress.Name = txtName.Text

  Profile.ShipToAddress.Phone = txtPhone.Text

End Sub

 

プロファイルを取得するときは、プロファイルがNullまたはEmptyかどうか確認してから参照します。

 

Protected Sub Page_Load(...) Handles Me.Load

  If Not String.IsNullOrEmpty(Profile.ShipToAddress.Name) Then

    txtPostalCode.Text = Profile.ShipToAddress.PostalCode

    txtProvince.Text = Profile.ShipToAddress.Province

    txtCity.Text = Profile.ShipToAddress.City

    txtStreet.Text = Profile.ShipToAddress.Street

    txtName.Text = Profile.ShipToAddress.Name

    txtPhone.Text = Profile.ShipToAddress.Phone

  End If

End Sub

 

11:再訪問したときに前回入力した送付先が自動的に表示される

fig11

 

ASP.NET EC のホームへ戻る