Parameter 类

定义

为数据源控件提供一种绑定到应用程序变量、用户标识和选择以及其他数据的机制。Provides a mechanism that data source controls use to bind to application variables, user identities and choices, and other data. 作为所有 ASP.NET 参数类型的基类。Serves as the base class for all ASP.NET parameter types.

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
继承
Parameter
派生
实现

示例

下面的示例演示如何在 SQL 查询的 W DropDownList here子句中使用控件的所选值。The following example shows how to use the selected value of a DropDownList control in the Where clause of a SQL query. 该示例使用ControlParameter类,该类派生ControlParameter自类。The example uses the ControlParameter class, which derives from the ControlParameter class.

元素定义具有名为 "@Title DropDownList1 " 的参数的查询,其中的值应为。 SelectCommandThe SelectCommand element defines the query with a parameter named "@Title" where the value from DropDownList1 should go. 元素指定将 "@Title" 占位符替换为DropDownList1控件的SelectedValue属性的值。 ControlParameterThe ControlParameter element specifies that the "@Title" placeholder will be replaced by the value of the SelectedValue property of the DropDownList1 control. 元素将添加SelectParametersSqlDataSource控件的集合中。 ControlParameterThe ControlParameter element is added to the SelectParameters collection of the SqlDataSource control.

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

下面的示例与前一个示例类似,但使用代码而不是标记。The following example is like the previous one, but uses code instead of markup. 第一次加载页面时, DropDownList控件没有选定值,并使用该Parameter对象的DefaultValue属性。When the page loads the first time, the DropDownList control has no selected value, and the DefaultValue property of the Parameter object is used.

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

下面的代码显示了上一示例中页的代码隐藏类。The following code shows the code-behind class for the page in the previous example.

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

下面的代码示例演示如何扩展Parameter类,以创建可供数据源控件和数据绑定方案中的其他控件使用的新参数类型。The following code example demonstrates how to extend the Parameter class to create a new parameter type that can be used by data source controls and other controls in data-binding scenarios. 数据源控件可以使用StaticParameter参数绑定到 Web 窗体页上声明的任何对象(通常为字符串)的值。A data source control can use a StaticParameter parameter to bind to the value of any object, typically a string, declared on a Web Forms page.

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

注解

Parameter类表示参数化 SQL 查询中的参数、筛选表达式或 ASP.NET 数据源控件用来选择、筛选或修改数据的业务对象方法调用。The Parameter class represents a parameter in a parameterized SQL query, a filtering expression, or a business object method call that an ASP.NET data source control uses to select, filter, or modify data. Parameter 对象包含在一个 ParameterCollection 对象中。Parameter objects are contained in a ParameterCollection object. Parameter在运行时计算对象,以将其所表示的变量的值绑定到数据源控件用来与数据进行交互的任何方法。Parameter objects are evaluated at run time, to bind the values of the variables they represent to whatever method is used by a data source control to interact with data.

使用与数据源和Parameter数据绑定控件派生的类来生成基于 Web 的数据应用程序。Use classes that derive from Parameter with data source and data-bound controls to build Web-based data applications. 数据源控件使用这些参数类将在 Web 应用程序中找到的特定类型的值绑定到 SQL 查询字符串、业务对象方法参数等中的占位符。These parameter classes are used by data source controls to bind specific kinds of values found in Web applications to placeholders in SQL query strings, business object method parameters, and more. 下表列出了 ASP.NET 中包含的参数类型。The following table lists parameter types that are included in ASP.NET.

ControlParameter 绑定 Web 服务器控件的任何公共属性。Binds any public property of a Web server control.
FormParameter 绑定窗体字段。Binds a form field.
SessionParameter 绑定会话状态字段。Binds a session-state field.
RouteParameter 绑定路由 URL 参数。Binds a route URL parameter.
CookieParameter 绑定 cookie 字段。Binds a cookie field.
QueryStringParameter 绑定查询字符串参数。Binds a query-string parameter.
ProfileParameter 绑定配置文件字段。Binds a profile field.

当要实现Parameter自己的自定义参数类型时,扩展基类。Extend the base Parameter class when you want to implement your own custom parameter types.

Parameter对象非常简单:具有Name Type和属性,可以声明方式表示,并且可以跟踪多个 HTTP 请求的状态。Parameter objects are very simple: they have a Name and a Type property, can be represented declaratively, and can track state across multiple HTTP requests. 所有参数都支持DefaultValue属性,这种情况下,当参数绑定到某个值时,而值在null运行时计算结果为。All parameters support a DefaultValue property, for cases when a parameter is bound to a value, but the value evaluates to null at run time.

使用带有数据源控件Parameter的对象的集合时,它们在集合中的顺序可能很重要。When using a collection of Parameter objects with a data source control, their order in the collection might matter. 有关如何使用参数的详细信息,请参阅将参数与 SqlDataSource 控件一起使用和将参数用于 ObjectDataSource 控件For more information on how parameters are used, see Using Parameters with the SqlDataSource Control and Using Parameters with the ObjectDataSource Control.

构造函数

Parameter()

初始化 Parameter 类的新默认实例。Initializes a new default instance of the Parameter class.

Parameter(Parameter)

使用所指定原始实例的值初始化 Parameter 类的新实例。Initializes a new instance of the Parameter class with the values of the original, specified instance.

Parameter(String)

使用指定的名称初始化 Parameter 类的新实例。Initializes a new instance of the Parameter class, using the specified name.

Parameter(String, DbType)

使用指定的名称和数据库类型初始化 Parameter 类的新实例。Initializes a new instance of the Parameter class, using the specified name and database type.

Parameter(String, DbType, String)

使用指定的名称、指定的数据库类型及其 Parameter 属性的指定值初始化 DefaultValue 类的新实例。Initializes a new instance of the Parameter class, using the specified name, the specified database type, and the specified value for its DefaultValue property.

Parameter(String, TypeCode)

使用指定的名称和类型初始化 Parameter 类的新实例。Initializes a new instance of the Parameter class, using the specified name and type.

Parameter(String, TypeCode, String)

使用 Parameter 类的 DefaultValue 属性的指定名称、指定类型和指定字符串初始化该类的新实例。Initializes a new instance of the Parameter class, using the specified name, the specified type, and the specified string for its DefaultValue property.

属性

ConvertEmptyStringToNull

获取或设置一个值,该值指示在 Parameter 对象绑定到的值为 Empty 时是否应将其转换为 nullGets or sets a value indicating whether the value that the Parameter object is bound to should be converted to null if it is Empty.

DbType

获取或设置参数的数据库类型。Gets or sets the database type of the parameter.

DefaultValue

指定参数的默认值(如果调用 Evaluate(HttpContext, Control) 方法时参数绑定到的值未被初始化)。Specifies a default value for the parameter, should the value that the parameter is bound to be uninitialized when the Evaluate(HttpContext, Control) method is called.

Direction

指示 Parameter 对象是否用于将值绑定到控件,或者是否可以使用控件更改值。Indicates whether the Parameter object is used to bind a value to a control, or the control can be used to change the value.

IsTrackingViewState

获取一个值,该值指示 Parameter 对象是否保存对其视图状态的更改。Gets a value indicating whether the Parameter object is saving changes to its view state.

Name

获取或设置参数的名称。Gets or sets the name of the parameter.

Size

获取或设置参数的大小。Gets or sets the size of the parameter.

Type

获取或设置参数类型。Gets or sets the type of the parameter.

ViewState

获取状态信息的字典,这些信息使您可以在同一页的多个请求间保存和还原 Parameter 对象的视图状态。Gets a dictionary of state information that allows you to save and restore the view state of a Parameter object across multiple requests for the same page.

方法

Clone()

返回当前 Parameter 实例的副本。Returns a duplicate of the current Parameter instance.

ConvertDbTypeToTypeCode(DbType)

DbType 值转换为等效的 TypeCode 值。Converts a DbType value to an equivalent TypeCode value.

ConvertTypeCodeToDbType(TypeCode)

TypeCode 值转换为等效的 DbType 值。Converts a TypeCode value to an equivalent DbType value.

Equals(Object)

确定指定的对象是否等于当前对象。Determines whether the specified object is equal to the current object.

(继承自 Object)
Evaluate(HttpContext, Control)

更新并返回 Parameter 对象的值。Updates and returns the value of the Parameter object.

GetDatabaseType()

获取与当前 DbType 实例的 CLR 类型等效的 Parameter 值。Gets the DbType value that is equivalent to the CLR type of the current Parameter instance.

GetHashCode()

作为默认哈希函数。Serves as the default hash function.

(继承自 Object)
GetType()

获取当前实例的 TypeGets the Type of the current instance.

(继承自 Object)
LoadViewState(Object)

将数据源视图还原为保存过的前一视图状态。Restores the data source view's previously saved view state.

MemberwiseClone()

创建当前 Object 的浅表副本。Creates a shallow copy of the current Object.

(继承自 Object)
OnParameterChanged()

调用包含 OnParametersChanged(EventArgs) 对象的 ParameterCollection 集合的 Parameter 方法。Calls the OnParametersChanged(EventArgs) method of the ParameterCollection collection that contains the Parameter object.

SaveViewState()

自页回发到服务器开始,将更改保存到 Parameter 对象的视图状态。Saves the changes to the Parameter object's view state since the time the page was posted back to the server.

SetDirty()

标记 Parameter 对象,以便在视图状态中记录其状态。Marks the Parameter object so its state will be recorded in view state.

ToString()

将此实例的值转换为其等效的字符串表示形式。Converts the value of this instance to its equivalent string representation.

TrackViewState()

使 Parameter 对象跟踪其视图状态更改,以便这些更改可以存储在控件的 ViewState 对象中并在同一页面的不同请求间保留。Causes the Parameter object to track changes to its view state so they can be stored in the control's ViewState object and persisted across requests for the same page.

显式界面实现

ICloneable.Clone()

返回当前 Parameter 实例的副本。Returns a duplicate of the current Parameter instance.

IStateManager.IsTrackingViewState

获取一个值,该值指示 Parameter 对象是否保存对其视图状态的更改。Gets a value indicating whether the Parameter object is saving changes to its view state.

IStateManager.LoadViewState(Object)

将数据源视图还原为保存过的前一视图状态。Restores the data source view's previously saved view state.

IStateManager.SaveViewState()

自页回发到服务器开始,将更改保存到 Parameter 对象的视图状态。Saves the changes to the Parameter object's view state since the time the page was posted back to the server.

IStateManager.TrackViewState()

使 Parameter 对象跟踪其视图状态更改,以便这些更改可以存储在控件的 ViewState 对象中并在同一页面的不同请求间保留。Causes the Parameter object to track changes to its view state so they can be stored in the control's ViewState object and persisted across requests for the same page.

适用于

另请参阅