Compartilhar via


Parameter Classe

Definição

Fornece um mecanismo que os controles da fonte de dados usam para associar-se a variáveis de aplicativo, identidades e opções do usuário e outros dados. Serve como a classe base para todos os tipos de parâmetro do 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
Herança
Parameter
Derivado
Implementações

Exemplos

O exemplo a seguir mostra como usar o valor selecionado de um DropDownList controle na cláusula Where de uma consulta SQL. O exemplo usa a ControlParameter classe , que deriva da ControlParameter classe .

O SelectCommand elemento define a consulta com um parâmetro chamado "@Title" para onde o valor de DropDownList1 deve ir. O ControlParameter elemento especifica que o espaço reservado "@Title" será substituído pelo valor da SelectedValue propriedade do DropDownList1 controle. O ControlParameter elemento é adicionado à SelectParameters coleção do SqlDataSource controle .

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

O exemplo a seguir é semelhante ao anterior, mas usa código em vez de marcação. Quando a página é carregada pela primeira vez, o DropDownList controle não tem nenhum valor selecionado e a DefaultValue propriedade do Parameter objeto é usada.

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

O código a seguir mostra a classe code-behind da página no exemplo anterior.

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

O exemplo de código a seguir demonstra como estender a Parameter classe para criar um novo tipo de parâmetro que pode ser usado por controles de fonte de dados e outros controles em cenários de associação de dados. Um controle de fonte de dados pode usar um StaticParameter parâmetro para associar ao valor de qualquer objeto, normalmente uma cadeia de caracteres, declarada em uma página do Web Forms.

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

Comentários

A Parameter classe representa um parâmetro em uma consulta SQL parametrizada, uma expressão de filtragem ou uma chamada de método de objeto de negócios que um ASP.NET controle da fonte de dados usa para selecionar, filtrar ou modificar dados. os objetos deParameter estão contidos em um objeto de ParameterCollection . Parameter Os objetos são avaliados em tempo de execução, para associar os valores das variáveis que eles representam a qualquer método usado por um controle de fonte de dados para interagir com os dados.

Use classes que derivam de com fonte de Parameter dados e controles associados a dados para criar aplicativos de dados baseados na Web. Essas classes de parâmetro são usadas por controles de fonte de dados para associar tipos específicos de valores encontrados em aplicativos Web a espaços reservados em cadeias de caracteres de consulta SQL, parâmetros de método de objeto de negócios e muito mais. A tabela a seguir lista os tipos de parâmetro incluídos no ASP.NET.

ControlParameter Associa qualquer propriedade pública de um controle de servidor Web.
FormParameter Associa um campo de formulário.
SessionParameter Associa um campo de estado de sessão.
RouteParameter Associa um parâmetro de URL de rota.
CookieParameter Associa um campo de cookie.
QueryStringParameter Associa um parâmetro de cadeia de caracteres de consulta.
ProfileParameter Associa um campo de perfil.

Estenda a classe base Parameter quando quiser implementar seus próprios tipos de parâmetro personalizados.

Parameter os objetos são muito simples: eles têm uma Name propriedade e Type , podem ser representados declarativamente e podem acompanhar o estado em várias solicitações HTTP. Todos os parâmetros dão suporte a null uma DefaultValue propriedade, para casos em que um parâmetro está associado a um valor, mas o valor é avaliado como em tempo de execução.

Ao usar uma coleção de Parameter objetos com um controle de fonte de dados, sua ordem na coleção pode importar. Para obter mais informações sobre como os parâmetros são usados, consulte Usando parâmetros com o controle SqlDataSource e Usando parâmetros com o controle ObjectDataSource.

Construtores

Parameter()

Inicializa uma nova instância padrão da classe Parameter.

Parameter(Parameter)

Inicializa uma nova instância da classe Parameter com os valores da instância original especificada.

Parameter(String)

Inicializa uma nova instância da classe Parameter usando o nome especificado.

Parameter(String, DbType)

Inicializa uma nova instância da classe Parameter usando o nome e o tipo de banco de dados especificados.

Parameter(String, DbType, String)

Inicializa uma nova instância da classe Parameter, usando o nome especificado, o tipo de banco de dados especificado e o valor especificado para sua propriedade DefaultValue.

Parameter(String, TypeCode)

Inicializa uma nova instância da classe Parameter usando o nome e tipo especificados.

Parameter(String, TypeCode, String)

Inicializa uma nova instância da classe Parameter, usando o nome especificado, o tipo especificado e a cadeia de caracteres especificada para sua propriedade DefaultValue.

Propriedades

ConvertEmptyStringToNull

Obtém ou define um valor que indica se o valor ao qual o objeto Parameter está associado deverá ser convertido em null se ele for Empty.

DbType

Obtém ou define o tipo de banco de dados do parâmetro.

DefaultValue

Especifica um valor padrão para o parâmetro, caso o valor a que o parâmetro esteja associado não devesse ser inicializado quando o método Evaluate(HttpContext, Control) for chamado.

Direction

Indica se o objeto Parameter é usado para associar um valor a um controle ou o controle pode ser usado para alterar o valor.

IsTrackingViewState

Obtém um valor que indica se o objeto Parameter está salvando alterações no estado de exibição.

Name

Obtém ou define o nome do parâmetro.

Size

Obtém ou define o tamanho do parâmetro.

Type

Obtém ou define o tipo do parâmetro.

ViewState

Obtém um dicionário de informações de estado que permite salvar e restaurar o estado de exibição de um objeto Parameter em várias solicitações da mesma página.

Métodos

Clone()

Retorna uma duplicata da instância de Parameter atual.

ConvertDbTypeToTypeCode(DbType)

Converte um valor DbType para um valor equivalente TypeCode.

ConvertTypeCodeToDbType(TypeCode)

Converte um valor TypeCode para um valor equivalente DbType.

Equals(Object)

Determina se o objeto especificado é igual ao objeto atual.

(Herdado de Object)
Evaluate(HttpContext, Control)

Atualiza e retorna o valor do objeto Parameter.

GetDatabaseType()

Obtém o valor DbType que é equivalente ao tipo CLR da instância Parameter atual.

GetHashCode()

Serve como a função de hash padrão.

(Herdado de Object)
GetType()

Obtém o Type da instância atual.

(Herdado de Object)
LoadViewState(Object)

Restaura o estado de exibição salvo anteriormente da exibição de fonte de dados.

MemberwiseClone()

Cria uma cópia superficial do Object atual.

(Herdado de Object)
OnParameterChanged()

Chama o método OnParametersChanged(EventArgs) da coleção ParameterCollection que contém o objeto Parameter.

SaveViewState()

Salva as alterações ao estado de exibição do objeto Parameter desde a hora em que a página foi postada de volta no servidor.

SetDirty()

Marca o objeto Parameter de modo que seu estado seja registrado no estado de exibição.

ToString()

Converte o valor dessa instância na representação da cadeia de caracteres equivalente.

TrackViewState()

Faz com que o objeto Parameter controle as alterações a seu estado de exibição de modo que elas possam ser armazenadas no objeto ViewState do controle e persistidas entre solicitações para a mesma página.

Implantações explícitas de interface

ICloneable.Clone()

Retorna uma duplicata da instância de Parameter atual.

IStateManager.IsTrackingViewState

Obtém um valor que indica se o objeto Parameter está salvando alterações no estado de exibição.

IStateManager.LoadViewState(Object)

Restaura o estado de exibição salvo anteriormente da exibição de fonte de dados.

IStateManager.SaveViewState()

Salva as alterações ao estado de exibição do objeto Parameter desde a hora em que a página foi postada de volta no servidor.

IStateManager.TrackViewState()

Faz com que o objeto Parameter controle as alterações a seu estado de exibição de modo que elas possam ser armazenadas no objeto ViewState do controle e persistidas entre solicitações para a mesma página.

Aplica-se a

Confira também