Parameter Klass
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
Tillhandahåller en mekanism som datakällans kontroller använder för att binda till programvariabler, användaridentiteter och val samt andra data. Fungerar som basklass för alla ASP.NET parametertyper.
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
- Arv
-
Parameter
- Härledda
- Implementeringar
Exempel
I följande exempel visas hur du använder det valda värdet för en DropDownList kontroll i W-satsenhere i en SQL-fråga. I exemplet används ControlParameter klassen, som härleds från ControlParameter klassen.
Elementet SelectCommand definierar frågan med en parameter med namnet "@Title" där värdet från DropDownList1 ska gå. Elementet ControlParameter anger att platshållaren "@Title" ersätts med värdet för SelectedValue kontrollens DropDownList1 egenskap. Elementet ControlParameter läggs till i SelectParameters kontrollens SqlDataSource samling.
<!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>
Följande exempel liknar det föregående, men använder kod i stället för markering. När sidan läses in första gången DropDownList har kontrollen inget markerat värde och DefaultValue egenskapen för Parameter objektet används.
<%@ 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>
Följande kod visar klassen code-behind för sidan i föregående exempel.
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
Följande kodexempel visar hur du utökar Parameter klassen för att skapa en ny parametertyp som kan användas av datakällans kontroller och andra kontroller i databindningsscenarier. En datakällakontroll kan använda en StaticParameter parameter för att binda till värdet för alla objekt, vanligtvis en sträng, som deklareras på en webbformulärsida.
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
Kommentarer
Klassen Parameter representerar en parameter i en parameteriserad SQL-fråga, ett filtreringsuttryck eller ett affärsobjektmetodanrop som en ASP.NET datakällkontroll använder för att välja, filtrera eller ändra data. Parameter objekt finns i ett ParameterCollection objekt. Parameter objekt utvärderas vid körning för att binda värdena för de variabler som de representerar till vilken metod som används av en datakällakontroll för att interagera med data.
Använd klasser som härleds från Parameter med datakällan och databundna kontroller för att skapa webbaserade dataprogram. Dessa parameterklasser används av datakällans kontroller för att binda specifika typer av värden som finns i webbprogram till platshållare i SQL-frågesträngar, affärsobjektmetodparametrar med mera. I följande tabell visas parametertyper som ingår i ASP.NET.
| Parametertyp | Description |
|---|---|
| ControlParameter | Binder alla offentliga egenskaper för en webbserverkontroll. |
| FormParameter | Binder ett formulärfält. |
| SessionParameter | Binder ett sessionstillståndsfält. |
| RouteParameter | Binder en routnings-URL-parameter. |
| CookieParameter | Binder ett cookiefält. |
| QueryStringParameter | Binder en frågesträngsparameter. |
| ProfileParameter | Binder ett profilfält. |
Utöka basklassen Parameter när du vill implementera dina egna anpassade parametertyper.
Parameter objekt är mycket enkla: de har en Name och en Type egenskap, kan representeras deklarativt och kan spåra tillstånd över flera HTTP-begäranden. Alla parametrar stöder en DefaultValue egenskap, för fall då en parameter är bunden till ett värde, men värdet utvärderas till null vid körning.
När du använder en samling Parameter objekt med en datakällakontroll kan deras ordning i samlingen vara viktig. Mer information om hur parametrar används finns i Använda parametrar med SqlDataSource-kontrollen och Använda parametrar med ObjectDataSource-kontrollen.
Konstruktorer
| Name | Description |
|---|---|
| Parameter() |
Initierar en ny standardinstans av Parameter klassen. |
| Parameter(Parameter) |
Initierar en ny instans av Parameter klassen med värdena för den ursprungliga, angivna instansen. |
| Parameter(String, DbType, String) |
Initierar en ny instans av Parameter klassen med det angivna namnet, den angivna databastypen och det angivna värdet för dess DefaultValue egenskap. |
| Parameter(String, DbType) |
Initierar en ny instans av Parameter klassen med det angivna namnet och databastypen. |
| Parameter(String, TypeCode, String) |
Initierar en ny instans av Parameter klassen med det angivna namnet, den angivna typen och den angivna strängen för dess DefaultValue egenskap. |
| Parameter(String, TypeCode) |
Initierar en ny instans av Parameter klassen med det angivna namnet och typen. |
| Parameter(String) |
Initierar en ny instans av Parameter klassen med det angivna namnet. |
Egenskaper
| Name | Description |
|---|---|
| ConvertEmptyStringToNull |
Hämtar eller anger ett värde som anger om värdet som objektet är bundet Parameter till ska konverteras till |
| DbType |
Hämtar eller anger parameterns databastyp. |
| DefaultValue |
Anger ett standardvärde för parametern om värdet som parametern är bunden till är onitialiserat när Evaluate(HttpContext, Control) metoden anropas. |
| Direction |
Anger om objektet Parameter används för att binda ett värde till en kontroll eller om kontrollen kan användas för att ändra värdet. |
| IsTrackingViewState |
Hämtar ett värde som anger om Parameter objektet sparar ändringar i visningstillståndet. |
| Name |
Hämtar eller anger namnet på parametern. |
| Size |
Hämtar eller anger parameterns storlek. |
| Type |
Hämtar eller anger parametertypen. |
| ViewState |
Hämtar en ordlista med tillståndsinformation som gör att du kan spara och återställa visningstillståndet för ett Parameter objekt över flera begäranden för samma sida. |
Metoder
| Name | Description |
|---|---|
| Clone() |
Returnerar en dubblett av den aktuella Parameter instansen. |
| ConvertDbTypeToTypeCode(DbType) |
Konverterar ett DbType värde till ett motsvarande TypeCode värde. |
| ConvertTypeCodeToDbType(TypeCode) |
Konverterar ett TypeCode värde till ett motsvarande DbType värde. |
| Equals(Object) |
Avgör om det angivna objektet är lika med det aktuella objektet. (Ärvd från Object) |
| Evaluate(HttpContext, Control) |
Uppdaterar och returnerar objektets Parameter värde. |
| GetDatabaseType() |
Hämtar värdet DbType som motsvarar CLR-typen för den aktuella Parameter instansen. |
| GetHashCode() |
Fungerar som standard-hash-funktion. (Ärvd från Object) |
| GetType() |
Hämtar den aktuella instansen Type . (Ärvd från Object) |
| LoadViewState(Object) |
Återställer datakällans tidigare sparade vytillstånd. |
| MemberwiseClone() |
Skapar en ytlig kopia av den aktuella Object. (Ärvd från Object) |
| OnParameterChanged() |
Anropar metoden för OnParametersChanged(EventArgs) samlingen ParameterCollection som innehåller Parameter objektet. |
| SaveViewState() |
Sparar ändringarna i Parameter objektets visningstillstånd sedan den tid då sidan publicerades tillbaka till servern. |
| SetDirty() |
Parameter Markerar objektet så att dess tillstånd registreras i visningstillstånd. |
| ToString() |
Konverterar värdet för den här instansen till motsvarande strängrepresentation. |
| TrackViewState() |
Parameter Gör att objektet spårar ändringar i dess visningstillstånd så att de kan lagras i kontrollens ViewState objekt och sparas mellan begäranden för samma sida. |
Explicita gränssnittsimplementeringar
| Name | Description |
|---|---|
| ICloneable.Clone() |
Returnerar en dubblett av den aktuella Parameter instansen. |
| IStateManager.IsTrackingViewState |
Hämtar ett värde som anger om Parameter objektet sparar ändringar i visningstillståndet. |
| IStateManager.LoadViewState(Object) |
Återställer datakällans tidigare sparade vytillstånd. |
| IStateManager.SaveViewState() |
Sparar ändringarna i Parameter objektets visningstillstånd sedan den tid då sidan publicerades tillbaka till servern. |
| IStateManager.TrackViewState() |
Parameter Gör att objektet spårar ändringar i dess visningstillstånd så att de kan lagras i kontrollens ViewState objekt och sparas mellan begäranden för samma sida. |