Parameter Classe
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
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 |
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. |