Condividi tramite


Parameter Classe

Definizione

Implementa un meccanismo usato dai controlli origine dati per il binding a variabili dell'applicazione, identità e scelte utente, nonché ad altri dati. Funge da classe base tutti i tipi di parametri 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
Ereditarietà
Parameter
Derivato
Implementazioni

Esempio

Nell'esempio seguente viene illustrato come usare il valore selezionato di un DropDownList controllo nella clausola Where di una query SQL. Nell'esempio ControlParameter viene usata la ControlParameter classe, che deriva dalla classe .

L'elemento SelectCommand definisce la query con un parametro denominato "@Title" in cui deve andare il valore DropDownList1 . L'elemento ControlParameter specifica che il segnaposto "@Title" verrà sostituito dal valore della SelectedValue proprietà del DropDownList1 controllo. L'elemento ControlParameterSelectParameters viene aggiunto alla raccolta del SqlDataSource controllo.

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

L'esempio seguente è simile a quello precedente, ma usa il codice anziché il markup. Quando la pagina carica la prima volta, il DropDownList controllo non ha alcun valore selezionato e la DefaultValue proprietà dell'oggetto Parameter viene usata.

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

Il codice seguente mostra la classe code-behind per la pagina nell'esempio precedente.

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

Nell'esempio di codice seguente viene illustrato come estendere la Parameter classe per creare un nuovo tipo di parametro che può essere usato dai controlli origine dati e da altri controlli negli scenari di data binding. Un controllo origine dati può usare un StaticParameter parametro per associare al valore di qualsiasi oggetto, in genere una stringa, dichiarata in una pagina Web Forms.

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

Commenti

La Parameter classe rappresenta un parametro in una query SQL con parametri, un'espressione di filtro o un metodo di oggetto business che un controllo origine dati ASP.NET usa per selezionare, filtrare o modificare i dati. Gli oggetti Parameter sono contenuti in un oggetto ParameterCollection. Parameter gli oggetti vengono valutati in fase di esecuzione per associare i valori delle variabili che rappresentano a qualsiasi metodo usato da un controllo origine dati per interagire con i dati.

Usare le classi derivate da con controlli associati all'origine dati e all'origine Parameter dati per compilare applicazioni dati basate sul Web. Queste classi di parametri vengono usate dai controlli origine dati per associare tipi specifici di valori trovati nelle applicazioni Web ai segnaposto nelle stringhe di query SQL, ai parametri del metodo business object e altro ancora. Nella tabella seguente sono elencati i tipi di parametro inclusi in ASP.NET.

ControlParameter Associa qualsiasi proprietà pubblica di un controllo server Web.
FormParameter Associa un campo modulo.
SessionParameter Associa un campo stato sessione.
RouteParameter Associa un parametro URL di route.
CookieParameter Associa un campo cookie.
QueryStringParameter Associa un parametro stringa di query.
ProfileParameter Associa un campo del profilo.

Estendere la classe di base Parameter quando si desidera implementare i propri tipi di parametri personalizzati.

Parameter gli oggetti sono molto semplici: hanno una Name proprietà e Type possono essere rappresentati in modo dichiarativo e possono tenere traccia dello stato tra più richieste HTTP. Tutti i parametri supportano una DefaultValue proprietà, per i casi in cui un parametro è associato a un valore, ma il valore restituisce null in fase di esecuzione.

Quando si usa una raccolta di Parameter oggetti con un controllo origine dati, l'ordine nella raccolta potrebbe essere importante. Per altre informazioni su come vengono usati i parametri, vedere Uso di parametri con il controllo SqlDataSource e l'uso dei parametri con il controllo ObjectDataSource.

Costruttori

Parameter()

Inizializza una nuova istanza predefinita della classe Parameter.

Parameter(Parameter)

Inizializza una nuova istanza della classe Parameter con i valori dell'istanza originale specificata.

Parameter(String)

Inizializza una nuova istanza della classe Parameter utilizzando il nome specificato.

Parameter(String, DbType)

Inizializza una nuova istanza della classe Parameter utilizzando il nome e il tipo di database specificati.

Parameter(String, DbType, String)

Inizializza una nuova istanza della classe Parameter utilizzando il nome, il tipo di database e il valore specificati per la relativa proprietà DefaultValue.

Parameter(String, TypeCode)

Inizializza una nuova istanza della classe Parameter utilizzando il tipo e il nome specificati.

Parameter(String, TypeCode, String)

Inizializza una nuova istanza della classe Parameter utilizzando il nome, il tipo e la stringa specificati per la relativa proprietà DefaultValue.

Proprietà

ConvertEmptyStringToNull

Ottiene o imposta un valore indicante se il valore a cui è associato l'oggetto Parameter deve essere convertito in null se è Empty.

DbType

Ottiene o imposta il tipo di database del parametro.

DefaultValue

Specifica un valore predefinito per il parametro, se il valore associato al parametro non deve essere inizializzato quando viene chiamato il metodo Evaluate(HttpContext, Control).

Direction

Indica se l'oggetto Parameter viene utilizzato per associare un valore a un controllo oppure il controllo può essere utilizzato per la modifica del valore.

IsTrackingViewState

Ottiene un valore che indica se l'oggetto Parameter sta salvando le modifiche apportate al relativo stato di visualizzazione.

Name

Ottiene o imposta il nome del parametro.

Size

Ottiene o imposta le dimensioni del parametro.

Type

Ottiene o imposta il tipo del parametro.

ViewState

Ottiene un dizionario di informazioni sullo stato che consente di salvare e ripristinare lo stato di visualizzazione di un oggetto Parameter tra più richieste per la stessa pagina.

Metodi

Clone()

Restituisce un duplicato dell'istanza Parameter corrente.

ConvertDbTypeToTypeCode(DbType)

Converte un valore DbType in un valore TypeCode equivalente.

ConvertTypeCodeToDbType(TypeCode)

Converte un valore TypeCode in un valore DbType equivalente.

Equals(Object)

Determina se l'oggetto specificato è uguale all'oggetto corrente.

(Ereditato da Object)
Evaluate(HttpContext, Control)

Viene aggiornato e restituisce il valore dell'oggetto Parameter.

GetDatabaseType()

Ottiene il valore DbType che è equivalente al tipo CLR dell'istanza corrente di Parameter.

GetHashCode()

Funge da funzione hash predefinita.

(Ereditato da Object)
GetType()

Ottiene l'oggetto Type dell'istanza corrente.

(Ereditato da Object)
LoadViewState(Object)

Ripristina lo stato di visualizzazione precedentemente salvato della visualizzazione origine dati.

MemberwiseClone()

Crea una copia superficiale dell'oggetto Object corrente.

(Ereditato da Object)
OnParameterChanged()

Chiame il metodo OnParametersChanged(EventArgs) dell'insieme ParameterCollection che contiene l'oggetto Parameter.

SaveViewState()

Salva le modifiche apportate allo stato di visualizzazione dell'oggetto Parameter dal momento in cui è stato eseguito il postback della pagina al server.

SetDirty()

Contrassegna l'oggetto Parameter in modo che il relativo stato venga registrato in stato di visualizzazione.

ToString()

Converte il valore dell'istanza corrente nell'equivalente rappresentazione di stringa.

TrackViewState()

Mediante questo metodo l'oggetto Parameter tiene traccia delle modifiche apportate al relativo stato di visualizzazione in modo che vengono memorizzate nell'oggetto ViewState del controllo e mantenute nelle richieste della stessa pagina.

Implementazioni dell'interfaccia esplicita

ICloneable.Clone()

Restituisce un duplicato dell'istanza Parameter corrente.

IStateManager.IsTrackingViewState

Ottiene un valore che indica se l'oggetto Parameter sta salvando le modifiche apportate al relativo stato di visualizzazione.

IStateManager.LoadViewState(Object)

Ripristina lo stato di visualizzazione precedentemente salvato della visualizzazione origine dati.

IStateManager.SaveViewState()

Salva le modifiche apportate allo stato di visualizzazione dell'oggetto Parameter dal momento in cui è stato eseguito il postback della pagina al server.

IStateManager.TrackViewState()

Mediante questo metodo l'oggetto Parameter tiene traccia delle modifiche apportate al relativo stato di visualizzazione in modo che vengono memorizzate nell'oggetto ViewState del controllo e mantenute nelle richieste della stessa pagina.

Si applica a

Vedi anche