ProfileBase クラス

定義

プロファイルのプロパティ値と情報への型指定しないアクセスを提供します。

public ref class ProfileBase : System::Configuration::SettingsBase
public class ProfileBase : System.Configuration.SettingsBase
type ProfileBase = class
    inherit SettingsBase
Public Class ProfileBase
Inherits SettingsBase
継承
ProfileBase
派生

次のコード例は、 型のプロパティと 型stringのプロパティを含むユーザー プロファイルをZipCode指定するWeb.config ファイルをRecentSearchListStringCollection示しています。 現在HttpContextの の生成されたProfileプロパティには、指定された各プロパティに対して厳密に型指定されたアクセサーがあります。

<configuration>
  <system.web>
    <anonymousIdentification enabled="true" />

    <profile enabled="true" defaultProvider="SqlProvider" >
      <properties>
        <add name="ZipCode" allowAnonymous="true" />
        <add name="RecentSearchList"
          type="System.Collections.Specialized.StringCollection"
          serializeAs="Xml"
          allowAnonymous="true" />
      </properties>
    </profile>
  </system.web>
</configuration>

次の例は、ユーザー プロファイルに指定されたプロパティを読み取って設定する ZipCode ASP.NET ページを示しています。 このコードを実行する前に、Web サイトの ASP.NET 構成設定でプロバイダーを既定値 AspNetSqlProvider に設定します。

<%@ 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>

次のコード例では、 クラスから継承するクラスを ProfileBase 定義して、カスタム プロファイルを作成します。 カスタム プロファイルの種類は、アプリケーションのWeb.config ファイルのプロファイル構成要素の属性で指定されますinherits

重要

この例には、セキュリティ上の脅威となる可能性があるユーザー入力を受け入れるテキスト ボックスが含まれています。 既定では、ASP.NET Web ページによって、ユーザー入力にスクリプトまたは HTML 要素が含まれていないかどうかが検証されます。 詳細については、「スクリプトによる攻略の概要」を参照してください。

using System;
using System.Web.Profile;

namespace Samples.AspNet.Profile
{
  public class EmployeeProfile : ProfileBase
  {
    [SettingsAllowAnonymous(false)]
    [ProfileProvider("EmployeeInfoProvider")]
    public string Department
    {
      get { return base["EmployeeDepartment"].ToString(); }
      set { base["EmployeeDepartment"] = value; }
    }

    [SettingsAllowAnonymous(false)]
    [ProfileProvider("EmployeeInfoProvider")]
    public EmployeeInfo Details
    {
      get { return (EmployeeInfo)base["EmployeeInfo"]; }
      set { base["EmployeeInfo"] = value; }
    }
  }

  public class EmployeeInfo
  {
    public string Name;
    public string Address;
    public string Phone;
    public string EmergencyContactName;
    public string EmergencyContactAddress;
    public string EmergencyContactPhone;
  }
}
Imports System.Web.Profile

Namespace Samples.AspNet.Profile

  Public Class EmployeeProfile
    Inherits ProfileBase

    <SettingsAllowAnonymous(False)> _
    <ProfileProvider("EmployeeInfoProvider")> _
    Public Property Department As String
      Get
        Return MyBase.Item("EmployeeDepartment").ToString()
      End Get
      Set
        MyBase.Item("EmployeeDepartment") = value
      End Set
    End Property

    <SettingsAllowAnonymous(False)> _
    <ProfileProvider("EmployeeInfoProvider")> _
    Public Property Details As EmployeeInfo
      Get
        Return CType(MyBase.Item("EmployeeInfo"), EmployeeInfo)
      End Get
      Set
        MyBase.Item("EmployeeInfo") = value
      End Set
    End Property
  End Class

  Public Class EmployeeInfo
    Public Name As String
    Public Address As String
    Public Phone As String
    Public EmergencyContactName As String
    Public EmergencyContactAddress As String
    Public EmergencyContactPhone As String
  End Class

End Namespace

注釈

ASP.NET は、 クラスを ProfileBase 使用して、ユーザー プロファイルに使用されるクラスを作成します。 ユーザー プロファイルが有効になっているアプリケーションが起動されると、ASP.NET は クラスから継承する 型 ProfileCommonの新しいクラスを ProfileBase 作成します。 厳密に型指定されたアクセサーは、プロファイル構成セクションで定義されている各プロパティの クラスに追加されますProfileCommon。 クラスのProfileCommon厳密に型指定されたアクセサーは、基本クラスの メソッドと SetPropertyValue メソッドをProfileBase呼び出GetPropertyValueして、それぞれプロファイル プロパティ値を取得および設定します。 クラスの ProfileCommon インスタンスは、ASP.NET アプリケーションの プロパティの Profile 値として設定されます。

ASP.NET アプリケーションでユーザー プロファイルのインスタンスを作成するには、 メソッドを Create 使用することをお勧めします。

注意 (継承者)

抽象クラスから ProfileBase 継承し、プロファイル構成要素で指定されていないユーザー プロファイルのプロパティを定義するカスタム プロファイル 実装を作成できます。 次の例に示すように、プロファイル構成要素の 属性を使用して inherits 、web.config ファイルでカスタム ユーザー プロファイル の種類を指定できます。 クラスの EmployeeProfile コードは、このトピックの「例」セクションに含まれています。

<configuration>
   <system.web>
      <profile inherits="Samples.AspNet.Profile.EmployeeProfile"  
      defaultProvider="SqlProvider">  
      <providers>  
         <clear />  
         <add  
            name="SqlProvider"  
            type="System.Web.Profile.SqlProfileProvider"   
            connectionStringName="SqlServices"   
            description="SQL Profile Provider for Sample"/>   
         <add  
            name="EmployeeInfoProvider"  
            type="System.Web.Profile.SqlProfileProvider"   
            connectionStringName="SqlServices"   
            description="SQL Profile Provider for Employee Info"/>   
      </providers>  
      
      <properties>  
         <add name="GarmentSize" />  
      </properties>  
      </profile>  
   </system.web>
</configuration>

コンストラクター

ProfileBase()

ProfileBase クラスのインスタンスを作成します。

プロパティ

Context

関連付けられた設定コンテキストを取得します。

(継承元 SettingsBase)
IsAnonymous

ユーザー プロファイルが匿名ユーザーのものかどうかを示す値を取得します。

IsDirty

いずれかのプロファイル プロパティが変更されているかどうかを示す値を取得します。

IsSynchronized

オブジェクトへのアクセスが同期されている (スレッド セーフである) かどうかを示す値を取得します。

(継承元 SettingsBase)
Item[String]

プロパティ名のインデックスによって指定されたプロパティ値を取得または設定します。

LastActivityDate

プロファイルの読み込みまたは変更が行われた最新の日時を取得します。

LastUpdatedDate

プロファイルが変更された最新の日時を取得します。

Properties

プロファイル内の各プロパティに対する SettingsProperty オブジェクトから成るコレクションを取得します。

PropertyValues

設定プロパティ値のコレクションを取得します。

(継承元 SettingsBase)
Providers

設定プロバイダーのコレクションを取得します。

(継承元 SettingsBase)
UserName

プロファイルに対するユーザー名を取得します。

メソッド

Create(String)

指定されたユーザー名のプロファイルのインスタンスを作成するために、ASP.NET によって使用されます。

Create(String, Boolean)

指定されたユーザー名のプロファイルのインスタンスを作成するために、ASP.NET によって使用されます。 ユーザーが認証済みであるか匿名であるかを示すパラメーターを取得します。

Equals(Object)

指定されたオブジェクトが現在のオブジェクトと等しいかどうかを判断します。

(継承元 Object)
GetHashCode()

既定のハッシュ関数として機能します。

(継承元 Object)
GetProfileGroup(String)

指定されたグループ名のプロパティ グループを取得します。

GetPropertyValue(String)

プロファイル プロパティの値を取得します。

GetType()

現在のインスタンスの Type を取得します。

(継承元 Object)
Initialize(SettingsContext, SettingsPropertyCollection, SettingsProviderCollection)

SettingsBase オブジェクトによって使用される内部プロパティを初期化します。

(継承元 SettingsBase)
Initialize(String, Boolean)

現在のユーザーに関するプロファイルのプロパティ値と情報を初期化します。

MemberwiseClone()

現在の Object の簡易コピーを作成します。

(継承元 Object)
Save()

プロファイルのデータ ソースを、変更されたプロファイル プロパティ値で更新します。

SetPropertyValue(String, Object)

プロファイル プロパティの値を設定します。

ToString()

現在のオブジェクトを表す文字列を返します。

(継承元 Object)

適用対象

こちらもご覧ください