Parameter Klasa
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Udostępnia mechanizm używany przez kontrolki źródła danych do powiązania ze zmiennymi aplikacji, tożsamościami użytkowników i opcjami wyboru oraz innymi danymi. Służy jako klasa bazowa dla wszystkich typów parametrów 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
- Dziedziczenie
-
Parameter
- Pochodne
- Implementuje
Przykłady
W poniższym przykładzie pokazano, jak użyć wybranej wartości kontrolki DropDownList w klauzuli Where
zapytania SQL. W przykładzie użyto ControlParameter klasy pochodzącej ControlParameter z klasy .
Element SelectCommand definiuje zapytanie z parametrem o nazwie "@Title", z DropDownList1
którego powinna zostać wybrana wartość. Element ControlParameter określa, że symbol zastępczy "@Title" zostanie zastąpiony wartością SelectedValue właściwości kontrolki DropDownList1
. Element ControlParameter jest dodawany do SelectParameters kolekcji kontrolki SqlDataSource .
<!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>
Poniższy przykład przypomina poprzedni, ale używa kodu zamiast znaczników. Gdy strona ładuje się po raz pierwszy, kontrolka DropDownList nie ma wybranej wartości, a DefaultValue właściwość Parameter obiektu jest używana.
<%@ 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>
Poniższy kod przedstawia klasę za kodem dla strony w poprzednim przykładzie.
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
W poniższym przykładzie kodu pokazano, jak rozszerzyć klasę w Parameter celu utworzenia nowego typu parametru, który może być używany przez kontrolki źródła danych i inne kontrolki w scenariuszach powiązania danych. Kontrolka źródła danych może używać parametru StaticParameter
do powiązania z wartością dowolnego obiektu, zazwyczaj ciągu, zadeklarowanego na stronie formularzy sieci Web.
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
Uwagi
Klasa Parameter reprezentuje parametr w sparametryzowanym zapytaniu SQL, wyrażeniu filtrowania lub wywołaniu metody obiektu biznesowego, którego ASP.NET kontrolka źródła danych używa do wybierania, filtrowania lub modyfikowania danych. Parameter obiekty są zawarte w ParameterCollection obiekcie. Parameter obiekty są oceniane w czasie wykonywania, aby powiązać wartości zmiennych, które reprezentują z dowolną metodą używaną przez kontrolkę źródła danych do interakcji z danymi.
Użyj klas, które pochodzą z Parameter kontrolek źródła danych i powiązanych z danymi, aby tworzyć aplikacje danych oparte na sieci Web. Te klasy parametrów są używane przez kontrolki źródła danych do powiązania określonych rodzajów wartości znalezionych w aplikacjach internetowych z symbolami zastępczymi w ciągach zapytań SQL, parametrami metody obiektu biznesowego i nie tylko. W poniższej tabeli wymieniono typy parametrów uwzględnione w ASP.NET.
ControlParameter | Wiąże dowolną publiczną właściwość kontrolki serwera sieci Web. |
FormParameter | Tworzy powiązanie pola formularza. |
SessionParameter | Tworzy powiązanie pola stanu sesji. |
RouteParameter | Tworzy powiązanie parametru adresu URL trasy. |
CookieParameter | Tworzy powiązanie pola pliku cookie. |
QueryStringParameter | Tworzy powiązanie parametru ciągu zapytania. |
ProfileParameter | Tworzy powiązanie pola profilu. |
Rozszerz klasę bazową Parameter , jeśli chcesz zaimplementować własne niestandardowe typy parametrów.
Parameter obiekty są bardzo proste: mają Name właściwość i Type , mogą być reprezentowane deklaratywnie i mogą śledzić stan wielu żądań HTTP. Wszystkie parametry obsługują DefaultValue właściwość, w przypadkach, gdy parametr jest powiązany z wartością, ale wartość jest obliczana null
w czasie wykonywania.
W przypadku używania kolekcji Parameter obiektów z kontrolą źródła danych ich kolejność w kolekcji może mieć znaczenie. Aby uzyskać więcej informacji na temat używania parametrów, zobacz Using Parameters with the SqlDataSource Control (Używanie parametrów za pomocą kontrolki SqlDataSource) i Using Parameters with the ObjectDataSource Control (Używanie parametrów za pomocą kontrolki SqlDataSource ) i Using Parameters with the ObjectDataSource Control (Używanie parametrów za pomocą kontrolki ObjectDataSource).
Konstruktory
Parameter() |
Inicjuje Parameter nowe domyślne wystąpienie klasy. |
Parameter(Parameter) |
Inicjuje nowe wystąpienie Parameter klasy z wartościami oryginalnego, określonego wystąpienia. |
Parameter(String) |
Inicjuje Parameter nowe wystąpienie klasy przy użyciu określonej nazwy. |
Parameter(String, DbType) |
Inicjuje Parameter nowe wystąpienie klasy przy użyciu określonej nazwy i typu bazy danych. |
Parameter(String, DbType, String) |
Inicjuje Parameter nowe wystąpienie klasy przy użyciu określonej nazwy, określonego typu bazy danych i określonej wartości dla jej DefaultValue właściwości. |
Parameter(String, TypeCode) |
Inicjuje Parameter nowe wystąpienie klasy przy użyciu określonej nazwy i typu. |
Parameter(String, TypeCode, String) |
Inicjuje Parameter nowe wystąpienie klasy przy użyciu określonej nazwy, określonego typu i określonego ciągu dla jego DefaultValue właściwości. |
Właściwości
ConvertEmptyStringToNull |
Pobiera lub ustawia wartość wskazującą, czy wartość, Parameter z którą obiekt jest powiązany, powinna zostać przekonwertowana na |
DbType |
Pobiera lub ustawia typ bazy danych parametru. |
DefaultValue |
Określa wartość domyślną parametru, jeśli wartość parametru jest powiązana z niezainicjowanym podczas wywoływania Evaluate(HttpContext, Control) metody. |
Direction |
Wskazuje, czy Parameter obiekt jest używany do powiązania wartości z kontrolką, czy kontrolki można użyć do zmiany wartości. |
IsTrackingViewState |
Pobiera wartość wskazującą, czy Parameter obiekt zapisuje zmiany w stanie widoku. |
Name |
Pobiera lub ustawia nazwę parametru. |
Size |
Pobiera lub ustawia rozmiar parametru. |
Type |
Pobiera lub ustawia typ parametru. |
ViewState |
Pobiera słownik informacji o stanie, który umożliwia zapisanie i przywrócenie stanu Parameter widoku obiektu w wielu żądaniach dla tej samej strony. |
Metody
Clone() |
Zwraca duplikat bieżącego Parameter wystąpienia. |
ConvertDbTypeToTypeCode(DbType) | |
ConvertTypeCodeToDbType(TypeCode) | |
Equals(Object) |
Określa, czy dany obiekt jest taki sam, jak bieżący obiekt. (Odziedziczone po Object) |
Evaluate(HttpContext, Control) |
Aktualizuje i zwraca wartość Parameter obiektu. |
GetDatabaseType() |
DbType Pobiera wartość równoważną typowi CLR bieżącego Parameter wystąpienia. |
GetHashCode() |
Służy jako domyślna funkcja skrótu. (Odziedziczone po Object) |
GetType() |
Type Pobiera wartość bieżącego wystąpienia. (Odziedziczone po Object) |
LoadViewState(Object) |
Przywraca wcześniej zapisany stan widoku źródła danych. |
MemberwiseClone() |
Tworzy płytkią kopię bieżącego Objectelementu . (Odziedziczone po Object) |
OnParameterChanged() |
Wywołuje metodę OnParametersChanged(EventArgs) kolekcji ParameterCollection zawierającej Parameter obiekt . |
SaveViewState() |
Zapisuje zmiany Parameter stanu widoku obiektu od momentu opublikowania strony z powrotem na serwerze. |
SetDirty() |
Oznacza obiekt tak Parameter , aby jego stan był rejestrowany w stanie widoku. |
ToString() |
Konwertuje wartość tego wystąpienia na jego równoważną reprezentację w postaci ciągu. |
TrackViewState() |
Parameter Powoduje, że obiekt śledzi zmiany stanu widoku, dzięki czemu można je przechowywać w obiekcie kontrolki ViewState i utrwalać w żądaniach dla tej samej strony. |
Jawne implementacje interfejsu
ICloneable.Clone() |
Zwraca duplikat bieżącego Parameter wystąpienia. |
IStateManager.IsTrackingViewState |
Pobiera wartość wskazującą, czy Parameter obiekt zapisuje zmiany w stanie widoku. |
IStateManager.LoadViewState(Object) |
Przywraca wcześniej zapisany stan widoku źródła danych. |
IStateManager.SaveViewState() |
Zapisuje zmiany Parameter stanu widoku obiektu od momentu opublikowania strony z powrotem na serwerze. |
IStateManager.TrackViewState() |
Parameter Powoduje, że obiekt śledzi zmiany stanu widoku, dzięki czemu można je przechowywać w obiekcie kontrolki ViewState i utrwalać w żądaniach dla tej samej strony. |