Freigeben über


ProfileBase.Item[String] Eigenschaft

Definition

Dient zum Abrufen oder Festlegen eines Profileigenschaftswerts, der vom Eigenschaftennamen indiziert wird.

public:
 virtual property System::Object ^ default[System::String ^] { System::Object ^ get(System::String ^ propertyName); void set(System::String ^ propertyName, System::Object ^ value); };
public override object this[string propertyName] { get; set; }
member this.Item(string) : obj with get, set
Default Public Overrides Property Item(propertyName As String) As Object

Parameter

propertyName
String

Der Name der Profileigenschaft.

Eigenschaftswert

Der Wert der angegebenen Profileigenschaft, eingegeben als object.

Ausnahmen

Es wurde versucht, einen Eigenschaftswert für ein anonymes Profil festzulegen, in dem sich das Attribut der Eigenschaft allowAnonymous befindet false.

Für das aktuelle Profil sind keine Eigenschaften definiert.

- oder -

Der angegebene Profileigenschaftsname ist im aktuellen Profil nicht vorhanden.

- oder -

Der Anbieter für die angegebene Profileigenschaft hat die angegebene Eigenschaft nicht erkannt.

Es wurde versucht, einen Eigenschaftswert festzulegen, der schreibgeschützt markiert wurde.

Es wurde versucht, einer Eigenschaft einen Wert mithilfe eines inkompatiblen Typs zuzuweisen.

Beispiele

Im folgenden Codebeispiel werden die Namen der Eigenschaften im Benutzerprofil aufgelistet, indem die Eigenschaft aus der Name statischen Properties Auflistung von SettingsProperty Objekten an ein GridView Steuerelement gebunden wird. Der ausgewählte Eigenschaftswert wird mithilfe der Auflistung anhand des Item[] Namens abgerufen. Ein Beispiel für eine Web.config Datei, die Eigenschaften für das Benutzerprofil angibt, finden Sie im Beispiel für die ProfileBase Klasse.

<%@ Page Language="C#" %>
<%@ Import Namespace="System.Web.Profile" %>

<!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_Load()
{
  if (!IsPostBack)
  {
    PropertiesListBox.DataSource = ProfileBase.Properties;
    PropertiesListBox.DataBind();
  }

  if (PropertiesListBox.SelectedItem != null)
  {
    object propValue = Profile[PropertiesListBox.SelectedItem.Text];

    Type propType = propValue.GetType();

    // If the property is a value type, return ToString().

    if (propType == typeof(string) || propType.IsValueType)
    {
      ValueLabel.Visible = true;
      ValueGridView.Visible = false;
      ValueLabel.Text = propValue.ToString();
      return;
    }


    // Bind the property to a GridView.

    try
    {
      ValueGridView.DataSource = propValue;
      ValueGridView.DataBind();
      ValueGridView.Visible = true;
      ValueLabel.Visible = false; 
    }
    catch
    {
      // If the property is not bindable, return ToString().

      ValueLabel.Visible = true;
      ValueGridView.Visible = false;
      ValueLabel.Text = propValue.ToString();
    }
  }
}

</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>Home Page</title>
</head>
<body>

<h3>View Profile properties:</h3>

<form id="form1" runat="server">
  <table border="0" cellpadding="2" cellspacing="2">
    <tr>
      <td>Property</td>
      <td>Value</td>
    </tr>
    <tr>
      <td valign="top">
        <asp:ListBox runat="server" id="PropertiesListBox" Rows="10" AutoPostBack="True" DataTextField="Name" />
      </td>
      <td valign="top">
        <asp:GridView runat="Server" id="ValueGridView" Visible="False" />
        <asp:Label runat="Server" id="ValueLabel" Visible="False" />
      </td>
    </tr>
  </table>
</form>

</body>
</html>
<%@ Page Language="VB" %>
<%@ Import Namespace="System.Web.Profile" %>

<!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_Load()

  If Not IsPostBack Then
    PropertiesListBox.DataSource = ProfileBase.Properties
    PropertiesListBox.DataBind()
  End If

  If Not PropertiesListBox.SelectedItem Is Nothing Then
    Dim propValue As Object = Profile(PropertiesListBox.SelectedItem.Text)

    Dim propType As Type = propValue.GetType()

    ' If the property is a value type, return ToString().

    If propType Is GetType(String) Or propType.IsValueType Then
      ValueLabel.Visible = True
      ValueGridView.Visible = False
      ValueLabel.Text = propValue.ToString()
      Return
    End If


    ' Bind the property to a GridView.

    Try
      ValueGridView.DataSource = propValue
      ValueGridView.DataBind()
      ValueGridView.Visible = True
      ValueLabel.Visible = False 
    Catch
      ' If the property is not bindable, return ToString().

      ValueLabel.Visible = True
      ValueGridView.Visible = False
      ValueLabel.Text = propValue.ToString()
    End Try
  End If
End Sub

</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>Home Page</title>
</head>
<body>

<h3>View Profile properties:</h3>

<form id="form1" runat="server">
  <table border="0" cellpadding="2" cellspacing="2">
    <tr>
      <td>Property</td>
      <td>Value</td>
    </tr>
    <tr>
      <td valign="top">
        <asp:ListBox runat="server" id="PropertiesListBox" Rows="10" AutoPostBack="True" DataTextField="Name" />
      </td>
      <td valign="top">
        <asp:GridView runat="Server" id="ValueGridView" Visible="False" />
        <asp:Label runat="Server" id="ValueLabel" Visible="False" />
      </td>
    </tr>
  </table>
</form>

</body>
</html>

Hinweise

Sie können diese Eigenschaft verwenden, um die Eigenschaftswerte des Benutzerprofils für Ihre Anwendung anhand des Namens abzurufen oder festzulegen. Zurückgegebene Werte werden eingegeben als object und müssen beim Abrufen als bestimmter Objekttyp umgewandelt werden. Für stark typierten Zugriff auf Profileigenschaftenwerte können Sie auf die Eigenschaft anhand des Namens als Element der Profile auf jeder Seite verfügbaren Eigenschaft zugreifen, Profile.CustomerAddressz. B. . .

Gilt für:

Weitere Informationen