Parameter Klass

Definition

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 null om det är Empty.

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.

Gäller för

Se även