Поделиться через


Parameter Класс

Определение

Предоставляем механизм, используемый элементами управления источника данных для привязки к переменным приложения, удостоверениям, выборам пользователей и другим данным. Служит базовым классом для всех типов параметров 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
Наследование
Parameter
Производный
Реализации

Примеры

В следующем примере показано, как использовать выбранное значение DropDownList элемента управления в предложении Where SQL-запроса. В примере используется ControlParameter класс , производный ControlParameter от класса .

Элемент SelectCommand определяет запрос с параметром с именем "@Title", куда должно идти значение из DropDownList1 . Элемент ControlParameter указывает, что заполнитель "@Title" будет заменен значением SelectedValue свойства DropDownList1 элемента управления . Элемент ControlParameter добавляется в коллекцию SelectParametersSqlDataSource элемента управления .

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

Следующий пример похож на предыдущий, но использует код вместо разметки. Когда страница загружается в первый раз, DropDownList элемент управления не имеет выбранного Parameter значения и DefaultValue используется свойство объекта .

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

В следующем коде показан класс кода программной части для страницы в предыдущем примере.

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 класс для создания нового типа параметра, который может использоваться элементами управления источником данных и другими элементами управления в сценариях привязки данных. Элемент управления источником данных может использовать StaticParameter параметр для привязки к значению любого объекта , как правило, строки, объявленной на странице Веб-форм.

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 элемент управления источником данных использует для выбора, фильтрации или изменения данных. Объекты Parameter содержатся в объекте ParameterCollection. Parameter Объекты вычисляются во время выполнения для привязки значений переменных, которые они представляют, к методу, используемому элементом управления источником данных для взаимодействия с данными.

Используйте классы, производные от Parameter с источником данных и элементами управления с привязкой к данным, для создания веб-приложений для работы с данными. Эти классы параметров используются элементами управления источником данных для привязки определенных типов значений, найденных в веб-приложениях, к заполнителям в строках SQL-запросов, параметрах метода бизнес-объекта и т. д. В следующей таблице перечислены типы параметров, включенные в ASP.NET.

ControlParameter Привязывает любое открытое свойство серверного веб-элемента управления.
FormParameter Привязывает поле формы.
SessionParameter Привязывает поле состояния сеанса.
RouteParameter Привязывает параметр URL-адреса маршрута.
CookieParameter Привязывает поле файла cookie.
QueryStringParameter Привязывает параметр строки запроса.
ProfileParameter Привязывает поле профиля.

Расширьте базовый Parameter класс, если требуется реализовать собственные типы пользовательских параметров.

Parameter Объекты очень просты: они имеют Name свойство и , Type могут быть представлены декларативно и могут отслеживать состояние в нескольких HTTP-запросах. Все параметры поддерживают DefaultValue свойство в случаях, когда параметр привязан к значению, но значение принимает значение null во время выполнения.

При использовании коллекции Parameter объектов с элементом управления источником данных их порядок в коллекции может иметь значение. Дополнительные сведения об использовании параметров см. в разделах Использование параметров с элементом управления SqlDataSource и Использование параметров с элементом управления ObjectDataSource.

Конструкторы

Parameter()

Инициализирует новый экземпляр по умолчанию класса Parameter.

Parameter(Parameter)

Инициализирует новый экземпляр класса Parameter значениями изначально заданного экземпляра.

Parameter(String)

Инициализирует новый экземпляр класса Parameter, используя заданное имя.

Parameter(String, DbType)

Инициализирует новый экземпляр Parameter, используя указанное имя и тип базы данных.

Parameter(String, DbType, String)

Инициализирует новый экземпляр класса Parameter заданным именем, типом базы данных и значением его свойства DefaultValue.

Parameter(String, TypeCode)

Инициализирует новый экземпляр класса Parameter, используя заданное имя и тип.

Parameter(String, TypeCode, String)

Инициализирует новый экземпляр класса Parameter, используя заданные имя, тип и строку для свойства DefaultValue.

Свойства

ConvertEmptyStringToNull

Возвращает или задает значение, указывающее на необходимость преобразования значения, к которому привязан объект Parameter в null, если его значение равно Empty.

DbType

Возвращает или задает тип базы данных параметра.

DefaultValue

Задает значение по умолчанию для параметра, если значение, к которому привязан параметр, должно быть инициализировано при вызове метода Evaluate(HttpContext, Control).

Direction

Указывает, используется ли объект Parameter для привязки значения к элементу управления или же элемент управления можно использовать для изменения значения.

IsTrackingViewState

Получает значение, указывающее сохраняет ли объект Parameter изменения в данных о состоянии представления.

Name

Возвращает или задает имя параметра.

Size

Возвращает или задает размер параметра.

Type

Возвращает или задает тип параметра.

ViewState

Возвращает словарь сведений о состоянии, позволяющих сохранять и восстанавливать состояние представления объекта Parameter при нескольких запросах одной и той же страницы.

Методы

Clone()

Возвращает дубликат текущего экземпляра Parameter.

ConvertDbTypeToTypeCode(DbType)

Преобразует значение DbType в эквивалентное значение TypeCode.

ConvertTypeCodeToDbType(TypeCode)

Преобразует значение TypeCode в эквивалентное значение DbType.

Equals(Object)

Определяет, равен ли указанный объект текущему объекту.

(Унаследовано от Object)
Evaluate(HttpContext, Control)

Обновляет и возвращает значение объекта Parameter.

GetDatabaseType()

Возвращает значение DbType, эквивалентное типу среды CLR текущего экземпляра Parameter.

GetHashCode()

Служит хэш-функцией по умолчанию.

(Унаследовано от Object)
GetType()

Возвращает объект Type для текущего экземпляра.

(Унаследовано от Object)
LoadViewState(Object)

Восстанавливает сохраненное раннее состояние представления источника данных.

MemberwiseClone()

Создает неполную копию текущего объекта Object.

(Унаследовано от Object)
OnParameterChanged()

Вызывает метод OnParametersChanged(EventArgs) коллекции ParameterCollection, содержащей объект Parameter.

SaveViewState()

Сохраняет изменения в данных о состоянии представления объекта Parameter после обратной передачи страницы на сервер.

SetDirty()

Обозначает объект Parameter как подлежащий записи его состояния в данные о состоянии представления.

ToString()

Преобразует значение этого экземпляра в эквивалентное ему строковое представление.

TrackViewState()

Инициирует отслеживание объектом Parameter изменений в состоянии его представления, благодаря чему их можно сохранить для этого объекта ViewState элемента управления и хранить их для всех запросов одной и той же страницы.

Явные реализации интерфейса

ICloneable.Clone()

Возвращает дубликат текущего экземпляра Parameter.

IStateManager.IsTrackingViewState

Получает значение, указывающее сохраняет ли объект Parameter изменения в данных о состоянии представления.

IStateManager.LoadViewState(Object)

Восстанавливает сохраненное раннее состояние представления источника данных.

IStateManager.SaveViewState()

Сохраняет изменения в данных о состоянии представления объекта Parameter после обратной передачи страницы на сервер.

IStateManager.TrackViewState()

Инициирует отслеживание объектом Parameter изменений в состоянии его представления, благодаря чему их можно сохранить для этого объекта ViewState элемента управления и хранить их для всех запросов одной и той же страницы.

Применяется к

См. также раздел