Freigeben über


Parameter Klasse

Definition

Stellt einen Mechanismus bereit, der von Datenquellensteuerelementen für eine Bindung an Anwendungsvariablen, Benutzeridentitäten und -optionen sowie andere Daten verwendet wird. Dient als Basisklasse für alle ASP.NET-Parametertypen.

public ref class Parameter : ICloneable, System::Web::UI::IStateManager
public class Parameter : ICloneable, System.Web.UI.IStateManager
type Parameter = class
    interface ICloneable
    interface IStateManager
Public Class Parameter
Implements ICloneable, IStateManager
Vererbung
Parameter
Abgeleitet
Implementiert

Beispiele

Das folgende Beispiel zeigt, wie der ausgewählte Wert eines DropDownList Steuerelements in der W-Klauselhere einer SQL-Abfrage verwendet wird. Im Beispiel wird die ControlParameter -Klasse verwendet, die von der ControlParameter -Klasse abgeleitet wird.

Das SelectCommand -Element definiert die Abfrage mit einem Parameter namens "@Title", an den der Wert von DropDownList1 gehen soll. Das ControlParameter -Element gibt an, dass der Platzhalter "@Title" durch den Wert der SelectedValue -Eigenschaft des Steuerelements DropDownList1 ersetzt wird. Das ControlParameter -Element wird der SelectParameters Auflistung des Steuerelements SqlDataSource hinzugefügt.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
  <head runat="server">
    <title>ASP.NET Example</title>
</head>
<body>
    <form id="form1" runat="server">

      <p><asp:dropdownlist
          id="DropDownList1"
          runat="server"
          autopostback="True">
          <asp:listitem selected="True">Sales Representative</asp:listitem>
          <asp:listitem>Sales Manager</asp:listitem>
          <asp:listitem>Vice President, Sales</asp:listitem>
      </asp:dropdownlist></p>

      <asp:sqldatasource
          id="SqlDataSource1"
          runat="server"
          connectionstring="<%$ ConnectionStrings:MyNorthwind%>"
          selectcommand="SELECT LastName FROM Employees WHERE Title = @Title">
          <selectparameters>
              <asp:controlparameter name="Title" controlid="DropDownList1" propertyname="SelectedValue"/>
          </selectparameters>
      </asp:sqldatasource>

      <p><asp:listbox
          id="ListBox1"
          runat="server"
          datasourceid="SqlDataSource1"
          datatextfield="LastName">
      </asp:listbox></p>

    </form>
  </body>
</html>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
  <head runat="server">
    <title>ASP.NET Example</title>
</head>
<body>
    <form id="form1" runat="server">

      <p><asp:dropdownlist
          id="DropDownList1"
          runat="server"
          autopostback="True">
          <asp:listitem selected="True">Sales Representative</asp:listitem>
          <asp:listitem>Sales Manager</asp:listitem>
          <asp:listitem>Vice President, Sales</asp:listitem>
      </asp:dropdownlist></p>

      <asp:sqldatasource
          id="SqlDataSource1"
          runat="server"
          connectionstring="<%$ ConnectionStrings:MyNorthwind%>"
          selectcommand="SELECT LastName FROM Employees WHERE Title = @Title">
          <selectparameters>
              <asp:controlparameter name="Title" controlid="DropDownList1" propertyname="SelectedValue"/>
          </selectparameters>
      </asp:sqldatasource>

      <p><asp:listbox
          id="ListBox1"
          runat="server"
          datasourceid="SqlDataSource1"
          datatextfield="LastName">
      </asp:listbox></p>

    </form>
  </body>
</html>

Das folgende Beispiel ähnelt dem vorherigen, verwendet jedoch Code anstelle von Markup. Wenn die Seite zum ersten Mal geladen wird, hat das DropDownList Steuerelement keinen ausgewählten Wert, und die DefaultValue -Eigenschaft des Parameter -Objekts wird verwendet.

<%@ Page Language="C#" CodeFile="param1acs.aspx.cs" Inherits="param1acs_aspx" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>ASP.NET Example</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:DropDownList
          runat="server"
          AutoPostBack="True"
          id="DropDownList1">
            <asp:ListItem Value="USA">USA</asp:ListItem>
            <asp:ListItem Value="UK">UK</asp:ListItem>
         </asp:DropDownList>

        <asp:DataGrid
          runat="server"
          id="DataGrid1" />    
    </div>
    </form>
</body>
</html>
<%@ Page Language="VB" AutoEventWireup="false" CodeFile="param1avb.aspx.vb" Inherits="param1avb_aspx" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>ASP.NET Example</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:DropDownList
          runat="server"
          AutoPostBack="True"
          id="DropDownList1">
            <asp:ListItem Value="USA">USA</asp:ListItem>
            <asp:ListItem Value="UK">UK</asp:ListItem>
         </asp:DropDownList>

        <asp:DataGrid
          runat="server"
          id="DataGrid1" />    
    </div>
    </form>
</body>
</html>

Der folgende Code zeigt die CodeBehind-Klasse für die Seite im vorherigen Beispiel.

public partial class param1acs_aspx : System.Web.UI.Page 
{
    private void Page_Load(object sender, System.EventArgs e)
    {
        SqlDataSource sqlSource = new SqlDataSource(
          ConfigurationManager.ConnectionStrings["MyNorthwind"].ConnectionString,
          "SELECT FirstName, LastName FROM Employees WHERE Country = @country;");

        ControlParameter country = new ControlParameter();
        country.Name = "country";
        country.Type = TypeCode.String;
        country.ControlID = "DropDownList1";
        country.PropertyName = "SelectedValue";

        // If the DefaultValue is not set, the DataGrid does not
        // display anything on the first page load. This is because
        // on the first page load, the DropDownList has no
        // selected item, and the ControlParameter evaluates to
        // String.Empty.
        country.DefaultValue = "USA";

        sqlSource.SelectParameters.Add(country);

        // Add the SqlDataSource to the page controls collection.
        Page.Controls.Add(sqlSource);

        DataGrid1.DataSource = sqlSource;
        DataGrid1.DataBind();
    }
}
Partial Class param1avb_aspx
   Inherits System.Web.UI.Page
    Private Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)

        Dim sqlSource As SqlDataSource

        sqlSource = New SqlDataSource(ConfigurationManager.ConnectionStrings("MyNorthwind").ConnectionString, "SELECT FirstName, LastName FROM Employees WHERE Country = @country;")
        Dim country As New ControlParameter()
        country.Name = "country"
        country.Type = TypeCode.String
        country.ControlID = "DropDownList1"
        country.PropertyName = "SelectedValue"
        ' If the DefaultValue is not set, the DataGrid does not
        ' display anything on the first page load. This is because
        ' on the first page load, the DropDownList has no
        ' selected item, and the ControlParameter evaluates to
        ' String.Empty.
        country.DefaultValue = "USA"
        sqlSource.SelectParameters.Add(country)

        ' Add the SqlDataSource to the page controls collection.
        Page.Controls.Add(sqlSource)


        DataGrid1.DataSource = sqlSource
        DataGrid1.DataBind()

    End Sub
End Class

Im folgenden Codebeispiel wird veranschaulicht, wie Sie die Parameter -Klasse erweitern, um einen neuen Parametertyp zu erstellen, der von Datenquellensteuerelementen und anderen Steuerelementen in Datenbindungsszenarien verwendet werden kann. Ein Datenquellensteuerelement kann einen StaticParameter Parameter verwenden, um an den Wert eines beliebigen Objekts zu binden, in der Regel eine Zeichenfolge, die auf einer Web Forms-Seite deklariert ist.

namespace Samples.AspNet {

  using System;
  using System.ComponentModel;
  using System.Security.Permissions;
  using System.Web;
  using System.Web.UI;
  using System.Web.UI.WebControls;

  [AspNetHostingPermission(SecurityAction.Demand, Level=AspNetHostingPermissionLevel.Minimal)]
  public class StaticParameter : Parameter {

    public StaticParameter() {
    }
    // The StaticParameter(string, object) constructor
    // initializes the DataValue property and calls the
    // Parameter(string) constructor to initialize the Name property.
    public StaticParameter(string name, object value) : base(name) {
      DataValue = value;
    }
    // The StaticParameter(string, TypeCode, object) constructor
    // initializes the DataValue property and calls the
    // Parameter(string, TypeCode) constructor to initialize the Name and
    // Type properties.
    public StaticParameter(string name, TypeCode type, object value) : base(name, type) {
      DataValue = value;
    }
    // The StaticParameter copy constructor is provided to ensure that
    // the state contained in the DataValue property is copied to new
    // instances of the class.
    protected StaticParameter(StaticParameter original) : base(original) {
      DataValue = original.DataValue;
    }

    // The Clone method is overridden to call the
    // StaticParameter copy constructor, so that the data in
    // the DataValue property is correctly transferred to the
    // new instance of the StaticParameter.
    protected override Parameter Clone() {
      return new StaticParameter(this);
    }
    // The DataValue can be any arbitrary object and is stored in ViewState.
    public object DataValue {
      get {
        return ViewState["Value"];
      }
      set {
        ViewState["Value"] = value;
      }
    }
    // The Value property is a type safe convenience property
    // used when the StaticParameter represents string data.
    // It gets the string value of the DataValue property, and
    // sets the DataValue property directly.
    public string Value {
      get {
        object o = DataValue;
        if (o == null || !(o is string))
          return String.Empty;
        return (string)o;
      }
      set {
        DataValue = value;
        OnParameterChanged();
      }
    }

    // The Evaluate method is overridden to return the
    // DataValue property instead of the DefaultValue.
    protected override object Evaluate(HttpContext context, Control control) {

      if (context.Request == null)
          return null;

      return DataValue;
    }
  }
}
Imports System.ComponentModel
Imports System.Security.Permissions
Imports System.Web
Imports System.Web.UI
Imports System.Web.UI.WebControls

Namespace Samples.AspNet

<AspNetHostingPermission(SecurityAction.Demand, Level:=AspNetHostingPermissionLevel.Minimal)> _
Public Class StaticParameter
   Inherits Parameter


   Public Sub New()
   End Sub

  ' The StaticParameter(string, object) constructor
  ' initializes the DataValue property and calls the
  ' Parameter(string) constructor to initialize the Name property.
   Public Sub New(name As String, value As Object)
      MyBase.New(name)
      DataValue = value
   End Sub

   ' The StaticParameter(string, TypeCode, object) constructor
   ' initializes the DataValue property and calls the
   ' Parameter(string, TypeCode) constructor to initialize the Name and
   ' Type properties.
   Public Sub New(name As String, type As TypeCode, value As Object)
      MyBase.New(name, type)
      DataValue = value
   End Sub
   ' The StaticParameter copy constructor is provided to ensure that
   ' the state contained in the DataValue property is copied to new
   ' instances of the class.
   Protected Sub New(original As StaticParameter)
      MyBase.New(original)
      DataValue = original.DataValue
   End Sub

   ' The Clone method is overridden to call the
   ' StaticParameter copy constructor, so that the data in
   ' the DataValue property is correctly transferred to the
   ' new instance of the StaticParameter.
   Protected Overrides Function Clone() As Parameter
      Return New StaticParameter(Me)
   End Function

   ' The DataValue can be any arbitrary object and is stored in ViewState.
   Public Property DataValue() As Object
      Get
         Return ViewState("Value")
      End Get
      Set
         ViewState("Value") = value
      End Set
   End Property
   ' The Value property is a type safe convenience property
   ' used when the StaticParameter represents string data.
   ' It gets the string value of the DataValue property, and
   ' sets the DataValue property directly.
   Public Property Value() As String
      Get
         Dim o As Object = DataValue
         If o Is Nothing OrElse Not TypeOf o Is String Then
            Return String.Empty
         End If
         Return CStr(o)
      End Get
      Set
         DataValue = value
         OnParameterChanged()
      End Set
   End Property
   ' The Evaluate method is overridden to return the
   ' DataValue property instead of the DefaultValue.
   Protected Overrides Function Evaluate(context As HttpContext, control As Control) As Object
      If context Is Nothing Then
          Return Nothing
      Else
          Return DataValue
      End If
   End Function
End Class

End Namespace ' Samples.AspNet

Hinweise

Die Parameter -Klasse stellt einen Parameter in einer parametrisierten SQL-Abfrage, einen Filterausdruck oder einen Geschäftsobjektmethodenaufruf dar, den ein ASP.NET Datenquellensteuerelement zum Auswählen, Filtern oder Ändern von Daten verwendet. Parameter-Objekte sind in einem ParameterCollection-Objekt enthalten. Parameter -Objekte werden zur Laufzeit ausgewertet, um die Werte der Variablen, die sie darstellen, an die Methode zu binden, die von einem Datenquellensteuerelement für die Interaktion mit Daten verwendet wird.

Verwenden Sie Klassen, die mit Datenquellen- und datengebundenen Steuerelementen abgeleitet Parameter werden, um webbasierte Datenanwendungen zu erstellen. Diese Parameterklassen werden von Datenquellensteuerelementen verwendet, um bestimmte Arten von Werten in Webanwendungen an Platzhalter in SQL-Abfragezeichenfolgen, Geschäftsobjektmethodenparametern usw. zu binden. In der folgenden Tabelle sind Parametertypen aufgeführt, die in ASP.NET enthalten sind.

ControlParameter Bindet jede öffentliche Eigenschaft eines Webserversteuerelements.
FormParameter Bindet ein Formularfeld.
SessionParameter Bindet ein Sitzungsstatusfeld.
RouteParameter Bindet einen Routen-URL-Parameter.
CookieParameter Bindet ein Cookiefeld.
QueryStringParameter Bindet einen Abfragezeichenfolgenparameter.
ProfileParameter Bindet ein Profilfeld.

Erweitern Sie die Basisklasse Parameter , wenn Sie Ihre eigenen benutzerdefinierten Parametertypen implementieren möchten.

Parameter -Objekte sind sehr einfach: Sie verfügen über eine Name und eine Type Eigenschaft, können deklarativ dargestellt werden und können den Zustand über mehrere HTTP-Anforderungen hinweg nachverfolgen. Alle Parameter unterstützen eine DefaultValue Eigenschaft, wenn ein Parameter an einen Wert gebunden ist, der Wert jedoch zur Laufzeit ausgewertet null wird.

Wenn Sie eine Auflistung von Parameter Objekten mit einem Datenquellensteuerelement verwenden, kann ihre Reihenfolge in der Auflistung von Bedeutung sein. Weitere Informationen zur Verwendung von Parametern finden Sie unter Verwenden von Parametern mit dem SqlDataSource-Steuerelement und Verwenden von Parametern mit dem ObjectDataSource-Steuerelement.

Konstruktoren

Parameter()

Initialisiert eine neue Standardinstanz der Parameter-Klasse.

Parameter(Parameter)

Initialisiert eine neue Instanz der Parameter-Klasse mit den Werten der ursprünglichen, angegebenen Instanz.

Parameter(String)

Initialisiert eine neue Instanz der Parameter-Klasse unter Verwendung des angegebenen Namens.

Parameter(String, DbType)

Initialisiert eine neue Instanz der Parameter-Klasse unter Verwendung des angegebenen Namens sowie des angegebenen Datenbanktyps.

Parameter(String, DbType, String)

Initialisiert eine neue Instanz der Parameter-Klasse unter Verwendung des angegebenen Namens, des angegebenen Datenbanktyps und dem angegebenen Wert für die DefaultValue-Eigenschaft.

Parameter(String, TypeCode)

Initialisiert eine neue Instanz der Parameter-Klasse unter Verwendung des angegebenen Namens und Typs.

Parameter(String, TypeCode, String)

Initialisiert eine neue Instanz der Parameter-Klasse unter Verwendung des angegebenen Namens, des angegebenen Typs und der angegebenen Zeichenfolge für die DefaultValue-Eigenschaft.

Eigenschaften

ConvertEmptyStringToNull

Ruft einen Wert ab oder legt einen Wert fest, der angibt, ob der Wert, an den das Parameter-Objekt gebunden ist, nach null konvertiert werden soll, wenn er Empty ist.

DbType

Ruft den Datenbanktyp des Parameters ab oder legt diesen fest.

DefaultValue

Gibt einen Standardwert für den Parameter an, wenn der Wert, an den der Parameter gebunden ist, beim Aufrufen der Evaluate(HttpContext, Control)-Methode nicht initialisiert ist.

Direction

Gibt an, ob das Parameter-Objekt zum Binden eines Werts an ein Steuerelement oder das Steuerelement zum Ändern des Werts verwendet werden kann.

IsTrackingViewState

Ruft einen Wert ab, der angibt, ob das Parameter-Objekt Änderungen des Ansichtszustands speichert.

Name

Ruft den Namen des Parameters ab oder legt ihn fest.

Size

Ruft die Größe des Parameters ab oder legt sie fest.

Type

Ruft den Typ des Parameters ab oder legt ihn fest.

ViewState

Ruft ein Wörterbuch mit Zustandsinformationen ab, mit dem Sie den Ansichtszustand eines Parameter-Objekts über mehrere Anforderungen für dieselbe Seite hinweg speichern und wiederherstellen können.

Methoden

Clone()

Gibt ein Duplikat der aktuellen Parameter-Instanz zurück.

ConvertDbTypeToTypeCode(DbType)

Konvertiert einen DbType-Wert in einen entsprechenden TypeCode-Wert.

ConvertTypeCodeToDbType(TypeCode)

Konvertiert einen TypeCode-Wert in einen entsprechenden DbType-Wert.

Equals(Object)

Bestimmt, ob das angegebene Objekt gleich dem aktuellen Objekt ist.

(Geerbt von Object)
Evaluate(HttpContext, Control)

Aktualisiert den Wert des Parameter-Objekts und gibt ihn zurück.

GetDatabaseType()

Ruft den DbType-Wert ab, der dem CLR-Typ der aktuellen Parameter-Instanz entspricht.

GetHashCode()

Fungiert als Standardhashfunktion.

(Geerbt von Object)
GetType()

Ruft den Type der aktuellen Instanz ab.

(Geerbt von Object)
LoadViewState(Object)

Stellt den früher gespeicherten Ansichtszustand der Datenquellenansicht wieder her.

MemberwiseClone()

Erstellt eine flache Kopie des aktuellen Object.

(Geerbt von Object)
OnParameterChanged()

Ruft die OnParametersChanged(EventArgs)-Methode der ParameterCollection-Auflistung auf, die das Parameter-Objekt enthält.

SaveViewState()

Speichert die Änderungen am Ansichtszustand des Parameter-Objekts seit dem Zeitpunkt, zu dem die Seite zurück an den Server gesendet wurde.

SetDirty()

Markiert das Parameter-Objekt, damit sein Zustand im Ansichtszustand aufgezeichnet wird.

ToString()

Konvertiert den Wert dieser Instanz in die entsprechende Zeichenfolgendarstellung.

TrackViewState()

Bewirkt, dass das Parameter-Objekt Änderungen an ihrem Ansichtszustand nachverfolgt, damit sie im ViewState-Objekt des Steuerelements gespeichert und über Anforderungen der gleichen Seite hinweg beibehalten werden.

Explizite Schnittstellenimplementierungen

ICloneable.Clone()

Gibt ein Duplikat der aktuellen Parameter-Instanz zurück.

IStateManager.IsTrackingViewState

Ruft einen Wert ab, der angibt, ob das Parameter-Objekt Änderungen des Ansichtszustands speichert.

IStateManager.LoadViewState(Object)

Stellt den früher gespeicherten Ansichtszustand der Datenquellenansicht wieder her.

IStateManager.SaveViewState()

Speichert die Änderungen am Ansichtszustand des Parameter-Objekts seit dem Zeitpunkt, zu dem die Seite zurück an den Server gesendet wurde.

IStateManager.TrackViewState()

Bewirkt, dass das Parameter-Objekt Änderungen an ihrem Ansichtszustand nachverfolgt, damit sie im ViewState-Objekt des Steuerelements gespeichert und über Anforderungen der gleichen Seite hinweg beibehalten werden.

Gilt für:

Weitere Informationen