QueryStringParameter Classe

Definizione

Esegue il binding del valore di un campo della stringa di query di una richiesta HTTP a un oggetto Parameter.

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
Ereditarietà
QueryStringParameter

Esempio

Nell'esempio seguente viene illustrato come creare un QueryStringParameter oggetto da utilizzare come filtro quando si visualizzano i dati in un GridView controllo . Aggiungere l'oggetto QueryStringParameter all'insieme AccessDataSource del FilterParameters controllo. L'oggetto parametro associa il valore del campo della stringa di query denominato country alla relativa FilterExpression stringa. Poiché non viene specificata alcuna DefaultValue proprietà per il parametro , se non viene passato alcun campo denominato country con la stringa di query, il AccessDataSource controllo genera un'eccezione NullReferenceException . Se viene passato un campo denominato country ma non ha alcun valore, il GridView controllo non visualizza dati.

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

Nell'esempio seguente viene illustrato come creare un QueryStringParameter oggetto per visualizzare i dati da un database di Access usando una query SQL con parametri. L'oggetto AccessDataSource recupera i record che vengono quindi visualizzati in un GridView controllo . Il GridView controllo è modificabile e consente agli utenti di aggiornare lo stato degli ordini nella tabella Northwind Traders Orders.

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

Commenti

È possibile usare la QueryStringParameter classe per associare il valore di un campo passato come parte di una stringa di query di richiesta HTTP a un parametro utilizzato in una query o in un comando con parametri. Il campo viene recuperato dall'insieme QueryString .

I controlli che associano dati al parametro potrebbero generare un'eccezione se viene fatto riferimento a un QueryStringParameter oggetto, ma non viene passata alcuna coppia nome/valore della stringa di query corrispondente. Analogamente, potrebbero non visualizzare dati se il nome del campo della stringa di query viene passato senza un valore corrispondente. Per evitare queste situazioni, impostare la DefaultValue proprietà dove appropriato.

La QueryStringParameter classe fornisce la QueryStringField proprietà , che identifica il nome del valore della stringa di query a cui eseguire l'associazione. Fornisce inoltre le proprietà ereditate dalla Parameter classe .

Importante

La QueryStringParameter classe non convalida il valore passato e fornisce il valore non elaborato. È tuttavia possibile convalidare il valore di un oggetto in un QueryStringParameter controllo origine dati. A tale scopo, gestire l'evento Selecting, Updating, Insertingo Deleting del controllo origine dati e controllare il valore del parametro nel gestore eventi. Se il valore del parametro non supera i test di convalida, è possibile annullare l'operazione di dati impostando la Cancel proprietà della classe associata CancelEventArgs su true.

Costruttori

QueryStringParameter()

Inizializza una nuova istanza senza nome della classe QueryStringParameter.

QueryStringParameter(QueryStringParameter)

Inizializza una nuova istanza della classe QueryStringParameter utilizzando i valori dell'istanza specificata dal parametro original.

QueryStringParameter(String, DbType, String)

Inizializza una nuova istanza denominata della classe QueryStringParameter, utilizzando il campo della stringa di query specificata e il tipo di dati del parametro.

QueryStringParameter(String, String)

Inizializza una nuova istanza denominata della classe QueryStringParameter, utilizzando la stringa specificata per identificare il campo della stringa di query per l'associazione.

QueryStringParameter(String, TypeCode, String)

Inizializza una nuova istanza denominata e fortemente tipizzata della classe QueryStringParameter, utilizzando la stringa specificata per identificare il campo della stringa di query per l'associazione.

Proprietà

ConvertEmptyStringToNull

Ottiene o imposta un valore indicante se il valore a cui è associato l'oggetto Parameter deve essere convertito in null se è Empty.

(Ereditato da Parameter)
DbType

Ottiene o imposta il tipo di database del parametro.

(Ereditato da Parameter)
DefaultValue

Specifica un valore predefinito per il parametro, se il valore associato al parametro non deve essere inizializzato quando viene chiamato il metodo Evaluate(HttpContext, Control).

(Ereditato da Parameter)
Direction

Indica se l'oggetto Parameter viene utilizzato per associare un valore a un controllo oppure il controllo può essere utilizzato per la modifica del valore.

(Ereditato da Parameter)
IsTrackingViewState

Ottiene un valore che indica se l'oggetto Parameter sta salvando le modifiche apportate al relativo stato di visualizzazione.

(Ereditato da Parameter)
Name

Ottiene o imposta il nome del parametro.

(Ereditato da Parameter)
QueryStringField

Ottiene o imposta il nome del campo della stringa di query a cui è associato il parametro.

Size

Ottiene o imposta le dimensioni del parametro.

(Ereditato da Parameter)
Type

Ottiene o imposta il tipo del parametro.

(Ereditato da Parameter)
ValidateInput

Ottiene o imposta se il valore del parametro della stringa di query viene convalidato o meno.

ViewState

Ottiene un dizionario di informazioni sullo stato che consente di salvare e ripristinare lo stato di visualizzazione di un oggetto Parameter tra più richieste per la stessa pagina.

(Ereditato da Parameter)

Metodi

Clone()

Restituisce un duplicato dell'istanza QueryStringParameter corrente.

Equals(Object)

Determina se l'oggetto specificato è uguale all'oggetto corrente.

(Ereditato da Object)
Evaluate(HttpContext, Control)

Viene aggiornato e restituisce il valore dell'oggetto QueryStringParameter.

GetDatabaseType()

Ottiene il valore DbType che è equivalente al tipo CLR dell'istanza corrente di Parameter.

(Ereditato da Parameter)
GetHashCode()

Funge da funzione hash predefinita.

(Ereditato da Object)
GetType()

Ottiene l'oggetto Type dell'istanza corrente.

(Ereditato da Object)
LoadViewState(Object)

Ripristina lo stato di visualizzazione precedentemente salvato della visualizzazione origine dati.

(Ereditato da Parameter)
MemberwiseClone()

Crea una copia superficiale dell'oggetto Object corrente.

(Ereditato da Object)
OnParameterChanged()

Chiame il metodo OnParametersChanged(EventArgs) dell'insieme ParameterCollection che contiene l'oggetto Parameter.

(Ereditato da Parameter)
SaveViewState()

Salva le modifiche apportate allo stato di visualizzazione dell'oggetto Parameter dal momento in cui è stato eseguito il postback della pagina al server.

(Ereditato da Parameter)
SetDirty()

Contrassegna l'oggetto Parameter in modo che il relativo stato venga registrato in stato di visualizzazione.

(Ereditato da Parameter)
ToString()

Converte il valore dell'istanza corrente nell'equivalente rappresentazione di stringa.

(Ereditato da Parameter)
TrackViewState()

Mediante questo metodo l'oggetto Parameter tiene traccia delle modifiche apportate al relativo stato di visualizzazione in modo che vengono memorizzate nell'oggetto ViewState del controllo e mantenute nelle richieste della stessa pagina.

(Ereditato da Parameter)

Implementazioni dell'interfaccia esplicita

ICloneable.Clone()

Restituisce un duplicato dell'istanza Parameter corrente.

(Ereditato da Parameter)
IStateManager.IsTrackingViewState

Ottiene un valore che indica se l'oggetto Parameter sta salvando le modifiche apportate al relativo stato di visualizzazione.

(Ereditato da Parameter)
IStateManager.LoadViewState(Object)

Ripristina lo stato di visualizzazione precedentemente salvato della visualizzazione origine dati.

(Ereditato da Parameter)
IStateManager.SaveViewState()

Salva le modifiche apportate allo stato di visualizzazione dell'oggetto Parameter dal momento in cui è stato eseguito il postback della pagina al server.

(Ereditato da Parameter)
IStateManager.TrackViewState()

Mediante questo metodo l'oggetto Parameter tiene traccia delle modifiche apportate al relativo stato di visualizzazione in modo che vengono memorizzate nell'oggetto ViewState del controllo e mantenute nelle richieste della stessa pagina.

(Ereditato da Parameter)

Si applica a

Vedi anche