QueryStringParameter Класс
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Привязывает значение поля строки запроса HTTP к объекту параметра.
public ref class QueryStringParameter : System::Web::UI::WebControls::Parameter
public class QueryStringParameter : System.Web.UI.WebControls.Parameter
type QueryStringParameter = class
inherit Parameter
Public Class QueryStringParameter
Inherits Parameter
- Наследование
Примеры
В следующем примере показано, как создать QueryStringParameter объект для использования в качестве фильтра при отображении данных в элементе GridView управления . Объект добавляется QueryStringParameter в коллекцию AccessDataSource элемента управления FilterParameters . Объект параметра привязывает значение поля строки запроса с именем country
к его FilterExpression строке. Так как для параметра не DefaultValue указано свойство, если в строке AccessDataSource запроса не передается поле с именемcountry
, элемент управления создает NullReferenceException исключение. Если поле с именем country
передано, но не имеет значения, элемент GridView управления не отображает никаких данных.
<%@ Page language="C#"%>
<!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" method="post" runat="server">
<!-- Use a Query String with country=USA -->
<asp:gridview
id ="GridView1"
runat="server"
datasourceid="MyAccessDataSource" />
<!-- Security Note: The AccessDataSource uses a QueryStringParameter,
Security Note: which does not perform validation of input from the client. -->
<asp:accessdatasource
id="MyAccessDataSource"
runat="server"
datafile="Northwind.mdb"
selectcommand="SELECT EmployeeID, LastName, Address, PostalCode, Country FROM Employees"
filterexpression="Country = '{0}'">
<filterparameters>
<asp:querystringparameter name="country" type="String" querystringfield="country" />
</filterparameters>
</asp:accessdatasource>
</form>
</body>
</html>
<%@ Page language="VB"%>
<!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" method="post" runat="server">
<!-- Use a Query String with country=USA -->
<asp:gridview
id ="GridView1"
runat="server"
datasourceid="MyAccessDataSource" />
<!-- Security Note: The AccessDataSource uses a QueryStringParameter,
Security Note: which does not perform validation of input from the client. -->
<asp:accessdatasource
id="MyAccessDataSource"
runat="server"
datafile="Northwind.mdb"
selectcommand="SELECT EmployeeID, LastName, Address, PostalCode, Country FROM Employees"
filterexpression="Country = '{0}'">
<filterparameters>
<asp:querystringparameter name="country" type="String" querystringfield="country" />
</filterparameters>
</asp:accessdatasource>
</form>
</body>
</html>
В следующем примере показано, как создать QueryStringParameter объект для отображения данных из базы данных Access с помощью параметризованного SQL-запроса. Объект AccessDataSource извлекает записи, которые затем отображаются в элементе GridView управления . Элемент GridView управления также доступен для редактирования и позволяет пользователям обновлять состояние заказов в таблице Заказов Northwind Traders.
<%@Page Language="C#" %>
<%@Import Namespace="System.Data" %>
<%@Import Namespace="System.Data.Common" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
private void UpdateRecords(Object source, EventArgs e)
{
// This method is an example of batch updating using a
// data source control. The method iterates through the rows
// of the GridView, extracts each CheckBox from the row and, if
// the CheckBox is checked, updates data by calling the Update
// method of the data source control, adding required parameters
// to the UpdateParameters collection.
CheckBox cb;
foreach(GridViewRow row in this.GridView1.Rows) {
cb = (CheckBox) row.Cells[0].Controls[1];
if(cb.Checked) {
string oid = (string) row.Cells[1].Text;
MyAccessDataSource.UpdateParameters.Add(new Parameter("date",TypeCode.DateTime,DateTime.Now.ToString()));
MyAccessDataSource.UpdateParameters.Add(new Parameter("orderid",TypeCode.String,oid));
MyAccessDataSource.Update();
MyAccessDataSource.UpdateParameters.Clear();
}
}
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>ASP.NET Example</title>
</head>
<body>
<form id="form1" runat="server">
<!-- Security Note: The SqlDataSource uses a QueryStringParameter,
Security Note: which does not perform validation of input from the client.
Security Note: To validate the value of the QueryStringParameter, handle the Selecting event. -->
<asp:SqlDataSource
id="MyAccessDataSource"
runat="server"
ProviderName="<%$ ConnectionStrings:MyPasswordProtectedAccess.providerName%>"
ConnectionString="<%$ ConnectionStrings:MyPasswordProtectedAccess%>"
SelectCommand="SELECT OrderID, OrderDate, RequiredDate, ShippedDate FROM Orders WHERE EmployeeID=?"
UpdateCommand="UPDATE Orders SET ShippedDate=? WHERE OrderID = ?">
<SelectParameters>
<asp:QueryStringParameter Name="empId" QueryStringField="empId" />
</SelectParameters>
</asp:SqlDataSource>
<asp:GridView
id ="GridView1"
runat="server"
DataSourceID="MyAccessDataSource"
AllowPaging="True"
PageSize="10"
AutoGenerateColumns="False">
<columns>
<asp:TemplateField HeaderText="">
<ItemTemplate>
<asp:CheckBox runat="server" />
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField HeaderText="Order" DataField="OrderID" />
<asp:BoundField HeaderText="Order Date" DataField="OrderDate" />
<asp:BoundField HeaderText="Required Date" DataField="RequiredDate" />
<asp:BoundField HeaderText="Shipped Date" DataField="ShippedDate" />
</columns>
</asp:GridView>
<asp:Button
id="Button1"
runat="server"
Text="Update the Selected Records As Shipped"
OnClick="UpdateRecords" />
<asp:Label id="Label1" runat="server" />
</form>
</body>
</html>
<%@Page Language="VB" %>
<%@Import Namespace="System.Data" %>
<%@Import Namespace="System.Data.Common" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
Private Sub UpdateRecords(source As Object, e As EventArgs)
' This method is an example of batch updating using a
' data source control. The method iterates through the rows
' of the GridView, extracts each CheckBox from the row and, if
' the CheckBox is checked, updates data by calling the Update
' method of the data source control, adding required parameters
' to the UpdateParameters collection.
Dim cb As CheckBox
Dim row As GridViewRow
For Each row In GridView1.Rows
cb = CType(row.Cells(0).Controls(1), CheckBox)
If cb.Checked Then
Dim oid As String
oid = CType(row.Cells(1).Text, String)
Dim param1 As New Parameter("date", TypeCode.DateTime, DateTime.Now.ToString())
MyAccessDataSource.UpdateParameters.Add(param1)
Dim param2 As New Parameter("orderid", TypeCode.String, oid)
MyAccessDataSource.UpdateParameters.Add(param2)
MyAccessDataSource.Update()
MyAccessDataSource.UpdateParameters.Clear()
End If
Next
End Sub ' UpdateRecords
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>ASP.NET Example</title>
</head>
<body>
<form id="form1" runat="server">
<!-- Security Note: The SqlDataSource uses a QueryStringParameter,
Security Note: which does not perform validation of input from the client.
Security Note: To validate the value of the QueryStringParameter, handle the Selecting event. -->
<asp:SqlDataSource
id="MyAccessDataSource"
runat="server"
ProviderName="<%$ ConnectionStrings:MyPasswordProtectedAccess.providerName%>"
ConnectionString="<%$ ConnectionStrings:MyPasswordProtectedAccess%>"
SelectCommand="SELECT OrderID, OrderDate, RequiredDate, ShippedDate FROM Orders WHERE EmployeeID=?"
UpdateCommand="UPDATE Orders SET ShippedDate=? WHERE OrderID = ?">
<SelectParameters>
<asp:QueryStringParameter Name="empId" QueryStringField="empId" />
</SelectParameters>
</asp:SqlDataSource>
<asp:GridView
id ="GridView1"
runat="server"
DataSourceID="MyAccessDataSource"
AllowPaging="True"
PageSize="10"
AutoGenerateColumns="False">
<columns>
<asp:TemplateField HeaderText="">
<ItemTemplate>
<asp:CheckBox runat="server" />
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField HeaderText="Order" DataField="OrderID" />
<asp:BoundField HeaderText="Order Date" DataField="OrderDate" />
<asp:BoundField HeaderText="Required Date" DataField="RequiredDate" />
<asp:BoundField HeaderText="Shipped Date" DataField="ShippedDate" />
</columns>
</asp:GridView>
<asp:Button
id="Button1"
runat="server"
Text="Update the Selected Records As Shipped"
OnClick="UpdateRecords" />
<asp:Label id="Label1" runat="server" />
</form>
</body>
</html>
Комментарии
Класс можно использовать для привязки QueryStringParameter значения поля, передаваемого как часть строки запроса HTTP-запроса, к параметру, который используется в параметризованном запросе или команде. Поле извлекается из QueryString коллекции.
Элементы управления, которые привязывают данные к параметру, могут вызывать исключение, если QueryStringParameter ссылка на объект не передается, но не передается соответствующая пара "имя-значение" строки запроса. Аналогичным образом они могут не отображать данные, если имя поля строки запроса передается без соответствующего значения. Чтобы избежать таких ситуаций, задайте свойство там DefaultValue , где это необходимо.
Класс QueryStringParameter предоставляет QueryStringField свойство , которое определяет имя значения строки запроса для привязки. Он также предоставляет свойства, унаследованные от Parameter класса .
Важно!
Класс QueryStringParameter не проверяет передаваемое значение, а предоставляет необработанное значение. Однако можно проверить значение объекта в элементе QueryStringParameter управления источником данных. Для этого обработайте Selecting
событие , Updating
, Inserting
или Deleting
элемента управления источником данных и проверьте значение параметра в обработчике событий. Если значение параметра не проходит тесты проверки, можно отменить операцию с данными, задав свойству Cancel связанного CancelEventArgs класса значение true
.
Конструкторы
QueryStringParameter() |
Инициализирует новый безымянный экземпляр класса QueryStringParameter. |
QueryStringParameter(QueryStringParameter) |
Инициализирует новый экземпляр класса QueryStringParameter значениями экземпляра, заданного параметром |
QueryStringParameter(String, DbType, String) |
Инициализирует новый именованный экземпляр класса QueryStringParameter, используя указанные поле строки запроса и тип данных параметра. |
QueryStringParameter(String, String) |
Инициализирует новый именованный экземпляр класса QueryStringParameter, используя заданную строку для обозначения поля строки запроса, к которому выполняется привязка. |
QueryStringParameter(String, TypeCode, String) |
Инициализирует новый именованный и строго типизированный экземпляр класса QueryStringParameter, используя заданную строку для обозначения поля строки запроса, к которому выполняется привязка. |
Свойства
ConvertEmptyStringToNull |
Возвращает или задает значение, указывающее на необходимость преобразования значения, к которому привязан объект Parameter в |
DbType |
Возвращает или задает тип базы данных параметра. (Унаследовано от Parameter) |
DefaultValue |
Задает значение по умолчанию для параметра, если значение, к которому привязан параметр, должно быть инициализировано при вызове метода Evaluate(HttpContext, Control). (Унаследовано от Parameter) |
Direction |
Указывает, используется ли объект Parameter для привязки значения к элементу управления или же элемент управления можно использовать для изменения значения. (Унаследовано от Parameter) |
IsTrackingViewState |
Получает значение, указывающее сохраняет ли объект Parameter изменения в данных о состоянии представления. (Унаследовано от Parameter) |
Name |
Возвращает или задает имя параметра. (Унаследовано от Parameter) |
QueryStringField |
Возвращает или задает имя поля строки запроса, к которому привязывается параметр. |
Size |
Возвращает или задает размер параметра. (Унаследовано от Parameter) |
Type |
Возвращает или задает тип параметра. (Унаследовано от Parameter) |
ValidateInput |
Получает или задает значение, указывающее, проверяется ли значение параметра строки запроса. |
ViewState |
Возвращает словарь сведений о состоянии, позволяющих сохранять и восстанавливать состояние представления объекта Parameter при нескольких запросах одной и той же страницы. (Унаследовано от Parameter) |
Методы
Clone() |
Возвращает дубликат текущего экземпляра QueryStringParameter. |
Equals(Object) |
Определяет, равен ли указанный объект текущему объекту. (Унаследовано от Object) |
Evaluate(HttpContext, Control) |
Обновляет и возвращает значение объекта QueryStringParameter. |
GetDatabaseType() |
Возвращает значение DbType, эквивалентное типу среды CLR текущего экземпляра Parameter. (Унаследовано от Parameter) |
GetHashCode() |
Служит хэш-функцией по умолчанию. (Унаследовано от Object) |
GetType() |
Возвращает объект Type для текущего экземпляра. (Унаследовано от Object) |
LoadViewState(Object) |
Восстанавливает сохраненное раннее состояние представления источника данных. (Унаследовано от Parameter) |
MemberwiseClone() |
Создает неполную копию текущего объекта Object. (Унаследовано от Object) |
OnParameterChanged() |
Вызывает метод OnParametersChanged(EventArgs) коллекции ParameterCollection, содержащей объект Parameter. (Унаследовано от Parameter) |
SaveViewState() |
Сохраняет изменения в данных о состоянии представления объекта Parameter после обратной передачи страницы на сервер. (Унаследовано от Parameter) |
SetDirty() |
Обозначает объект Parameter как подлежащий записи его состояния в данные о состоянии представления. (Унаследовано от Parameter) |
ToString() |
Преобразует значение этого экземпляра в эквивалентное ему строковое представление. (Унаследовано от Parameter) |
TrackViewState() |
Инициирует отслеживание объектом Parameter изменений в состоянии его представления, благодаря чему их можно сохранить для этого объекта ViewState элемента управления и хранить их для всех запросов одной и той же страницы. (Унаследовано от Parameter) |
Явные реализации интерфейса
ICloneable.Clone() |
Возвращает дубликат текущего экземпляра Parameter. (Унаследовано от Parameter) |
IStateManager.IsTrackingViewState |
Получает значение, указывающее сохраняет ли объект Parameter изменения в данных о состоянии представления. (Унаследовано от Parameter) |
IStateManager.LoadViewState(Object) |
Восстанавливает сохраненное раннее состояние представления источника данных. (Унаследовано от Parameter) |
IStateManager.SaveViewState() |
Сохраняет изменения в данных о состоянии представления объекта Parameter после обратной передачи страницы на сервер. (Унаследовано от Parameter) |
IStateManager.TrackViewState() |
Инициирует отслеживание объектом Parameter изменений в состоянии его представления, благодаря чему их можно сохранить для этого объекта ViewState элемента управления и хранить их для всех запросов одной и той же страницы. (Унаследовано от Parameter) |