Бөлісу құралы:


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 добавляется в SelectParameters коллекцию 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>

Следующий пример похож на предыдущий, но использует код вместо разметки. Когда страница загружается в первый раз, 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, DbType, String)

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

Parameter(String, DbType)

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

Parameter(String, TypeCode, String)

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

Parameter(String, TypeCode)

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

Parameter(String)

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

Свойства

Имя Описание
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 и сохраняться в запросах на одну и ту же страницу.

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

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