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