Sdílet prostřednictvím


Parameter Třída

Definice

Poskytuje mechanismus, který ovládací prvky zdroje dat používají k vytvoření vazby na proměnné aplikace, identity uživatelů a volby a další data. Slouží jako základní třída pro všechny typy parametrů ASP.NET.

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
Dědičnost
Parameter
Odvozené
Implementuje

Příklady

Následující příklad ukazuje, jak použít vybranou DropDownList hodnotu ovládacího prvku v klauzuli Where dotazu SQL. Příklad používá ControlParameter třídu, která je odvozena z ControlParameter třídy.

Element SelectCommand definuje dotaz s parametrem s názvem "@Title", kde má být hodnota od.DropDownList1 Prvek ControlParameter určuje, že zástupný symbol "@Title" bude nahrazen hodnotou SelectedValue vlastnosti DropDownList1 ovládacího prvku. Prvek ControlParameter se přidá do SelectParameters kolekce SqlDataSource ovládacího prvku.

<!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>

Následující příklad je podobný předchozímu příkladu, ale používá kód místo značek. Při prvním DropDownList načtení stránky ovládací prvek nemá žádnou vybranou hodnotu a DefaultValue vlastnost objektu Parameter se použije.

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

Následující kód ukazuje třídu kódu za stránkou v předchozím příkladu.

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

Následující příklad kódu ukazuje, jak rozšířit Parameter třídu o vytvoření nového typu parametru, který lze použít ovládacími prvky zdroje dat a další ovládací prvky ve scénářích datových vazeb. Ovládací prvek zdroje dat může použít StaticParameter parametr k vytvoření vazby na hodnotu libovolného objektu, obvykle řetězec deklarovaný na stránce Webové formuláře.

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

Poznámky

Třída Parameter představuje parametr v parametrizovaném dotazu SQL, výrazu filtrování nebo volání metody obchodního objektu, které ASP.NET ovládací prvek zdroje dat používá k výběru, filtrování nebo úpravě dat. Parameter objekty jsou obsaženy v objektu ParameterCollection . Parameter objekty se vyhodnocují za běhu, aby se svážely hodnoty proměnných, které představují, s libovolnou metodou, kterou používá ovládací prvek zdroje dat k interakci s daty.

K vytváření webových datových aplikací použijte třídy odvozené ze Parameter zdroje dat a ovládací prvky vázané na data. Tyto třídy parametrů používají ovládací prvky zdroje dat k vytvoření vazby konkrétních druhů hodnot nalezených ve webových aplikacích na zástupné symboly v řetězcích dotazu SQL, parametrech metody obchodních objektů a dalších. Následující tabulka uvádí typy parametrů, které jsou součástí ASP.NET.

Typ parametru Description
ControlParameter Vytvoří vazbu jakékoli veřejné vlastnosti ovládacího prvku webového serveru.
FormParameter Vytvoří vazbu pole formuláře.
SessionParameter Vytvoří vazbu pole stavu relace.
RouteParameter Vytvoří vazbu parametru adresy URL trasy.
CookieParameter Vytvoří vazbu pole cookie.
QueryStringParameter Vytvoří vazbu na parametr řetězce dotazu.
ProfileParameter Vytvoří vazbu na pole profilu.

Rozšiřte základní Parameter třídu, pokud chcete implementovat vlastní typy parametrů.

Parameter objekty jsou velmi jednoduché: mají Name a Type vlastnost, mohou být reprezentovány deklarativním způsobem a mohou sledovat stav napříč více požadavky HTTP. Všechny parametry podporují DefaultValue vlastnost v případech, kdy je parametr vázán na hodnotu, ale hodnota se null vyhodnotí za běhu.

Při použití kolekce Parameter objektů s ovládacím prvku zdroje dat může být jejich pořadí v kolekci důležité. Další informace o tom, jak se používají parametry, naleznete v tématu Použití parametrů s ovládacím prvku SqlDataSource a Použití parametrů s Ovládacím prvku ObjectDataSource.

Konstruktory

Name Description
Parameter()

Inicializuje novou výchozí instanci Parameter třídy.

Parameter(Parameter)

Inicializuje novou instanci Parameter třídy s hodnotami původní zadané instance.

Parameter(String, DbType, String)

Inicializuje novou instanci třídy pomocí zadaného Parameter názvu, zadaného typu databáze a zadané hodnoty pro jeho DefaultValue vlastnost.

Parameter(String, DbType)

Inicializuje novou instanci Parameter třídy pomocí zadaného názvu a typu databáze.

Parameter(String, TypeCode, String)

Inicializuje novou instanci Parameter třídy pomocí zadaného názvu, zadaného typu a zadaného řetězce pro jeho DefaultValue vlastnost.

Parameter(String, TypeCode)

Inicializuje novou instanci Parameter třídy pomocí zadaného názvu a typu.

Parameter(String)

Inicializuje novou instanci Parameter třídy pomocí zadaného názvu.

Vlastnosti

Name Description
ConvertEmptyStringToNull

Získá nebo nastaví hodnotu určující, zda hodnota, na kterou Parameter je objekt vázán, by měla být převedena na null , pokud je Empty.

DbType

Získá nebo nastaví typ databáze parametru.

DefaultValue

Určuje výchozí hodnotu parametru, pokud má být parametr vázán na neinicializaci při Evaluate(HttpContext, Control) zavolání metody.

Direction

Určuje, zda Parameter se objekt používá k vytvoření vazby hodnoty k ovládacímu prvku, nebo lze použít ke změně hodnoty.

IsTrackingViewState

Získá hodnotu určující, zda Parameter objekt ukládá změny do jeho stavu zobrazení.

Name

Získá nebo nastaví název parametru.

Size

Získá nebo nastaví velikost parametru.

Type

Získá nebo nastaví typ parametru.

ViewState

Získá slovník informací o stavu, který umožňuje uložit a obnovit stav zobrazení objektu Parameter napříč více požadavky na stejnou stránku.

Metody

Name Description
Clone()

Vrátí duplikát aktuální Parameter instance.

ConvertDbTypeToTypeCode(DbType)

DbType Převede hodnotu na ekvivalentní TypeCode hodnotu.

ConvertTypeCodeToDbType(TypeCode)

TypeCode Převede hodnotu na ekvivalentní DbType hodnotu.

Equals(Object)

Určuje, zda je zadaný objekt roven aktuálnímu objektu.

(Zděděno od Object)
Evaluate(HttpContext, Control)

Aktualizuje a vrátí hodnotu objektu Parameter .

GetDatabaseType()

DbType Získá hodnotu, která je ekvivalentní typu CLR aktuální Parameter instance.

GetHashCode()

Slouží jako výchozí funkce hash.

(Zděděno od Object)
GetType()

Získá Type aktuální instance.

(Zděděno od Object)
LoadViewState(Object)

Obnoví dříve uložený stav zobrazení zdroje dat.

MemberwiseClone()

Vytvoří mělkou kopii aktuálního Object.

(Zděděno od Object)
OnParameterChanged()

OnParametersChanged(EventArgs) Volá metodu ParameterCollection kolekce, která obsahuje Parameter objekt.

SaveViewState()

Uloží změny do stavu zobrazení objektu Parameter od doby, kdy byla stránka odeslána zpět na server.

SetDirty()

Parameter Označí objekt tak, aby byl jeho stav zaznamenán ve stavu zobrazení.

ToString()

Převede hodnotu této instance na ekvivalentní řetězcové vyjádření.

TrackViewState()

Způsobí, že Parameter objekt bude sledovat změny jeho stavu zobrazení, aby je bylo možné uložit do objektu ViewState ovládacího prvku a zachovat napříč požadavky na stejnou stránku.

Explicitní implementace rozhraní

Name Description
ICloneable.Clone()

Vrátí duplikát aktuální Parameter instance.

IStateManager.IsTrackingViewState

Získá hodnotu určující, zda Parameter objekt ukládá změny do jeho stavu zobrazení.

IStateManager.LoadViewState(Object)

Obnoví dříve uložený stav zobrazení zdroje dat.

IStateManager.SaveViewState()

Uloží změny do stavu zobrazení objektu Parameter od doby, kdy byla stránka odeslána zpět na server.

IStateManager.TrackViewState()

Způsobí, že Parameter objekt bude sledovat změny jeho stavu zobrazení, aby je bylo možné uložit do objektu ViewState ovládacího prvku a zachovat napříč požadavky na stejnou stránku.

Platí pro

Viz také