Exemplo de Implementação (Visual Basic) da Chamada de Retorno do Cliente
Demonstra um página da Web do ASP.NET que implementa um callback de cliente.Para obter mais informações, consulte Implementando Callbacks de Clientes Através de Programação Sem Postbacks nas Páginas ASP.NET.
Exemplo
Descrição
O exemplo de código a seguir possui duas partes.A primeira parte do exemplo mostra uma página da Web do ASP.NET (a página.aspx).A segunda parte exibe o arquivo code-behind correspondente (o arquivo .apsx.vb).
Código
<%@ Page Language="VB" AutoEventWireup="true"
CodeFile="ClientCallback.aspx.vb" Inherits="ClientCallback" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head id="Head1" >
<title>Client Callback Example</title>
<script type="text/javascript">
function LookUpStock()
{
var lb = document.getElementById("ListBox1");
var product = lb.options[lb.selectedIndex].text;
CallServer(product, "");
}
function ReceiveServerData(rValue)
{
document.getElementById("ResultsSpan").innerHTML = rValue;
}
</script>
</head>
<body>
<form id="form1" >
<div>
<asp:ListBox ID="ListBox1" Runat="server"></asp:ListBox>
<br />
<br />
<button type="Button" onclick="LookUpStock()">Look Up Stock</button>
<br />
<br />
Items in stock: <span id="ResultsSpan" ></span>
<br />
</div>
</form>
</body>
</html>
Partial Class ClientCallback
Inherits System.Web.UI.Page
Implements System.Web.UI.ICallbackEventHandler
Protected catalog As ListDictionary
Protected returnValue As String
Sub Page_Load(ByVal sender As Object, ByVal e As _
System.EventArgs) Handles Me.Load
Dim cbReference As String
cbReference = Page.ClientScript.GetCallbackEventReference(Me, _
"arg", "ReceiveServerData", "context")
Dim callbackScript As String = ""
callbackScript &= "function CallServer(arg, context) { " & _
cbReference & "} ;"
Page.ClientScript.RegisterClientScriptBlock(Me.GetType(), _
"CallServer", callbackScript, True)
' Populate List Dictionary with invented database data
catalog = New ListDictionary()
catalog.Add("monitor", 12)
catalog.Add("laptop", 10)
catalog.Add("keyboard", 23)
catalog.Add("mouse", 17)
ListBox1.DataSource = catalog
ListBox1.DataTextField = "key"
ListBox1.DataBind()
End Sub
Public Sub RaiseCallbackEvent(ByVal eventArgument As String) _
Implements System.Web.UI.ICallbackEventHandler.RaiseCallbackEvent
If catalog(eventArgument) Is Nothing Then
returnValue = "-1"
Else
returnValue = catalog(eventArgument).ToString()
End If
End Sub
Public Function GetCallbackResult() _
As String Implements _
System.Web.UI.ICallbackEventHandler.GetCallbackResult
Return returnValue
End Function
End Class
Comentários
A página da Web emula uma pesquisa de banco de dados para determinar o número de itens que estão disponíveis, ou em estoque, para uma série de produtos (monitores, teclados, e assim por diante).Para simplificar este exemplo de código, o banco de dados é representado por uma lista dicionário que contém um conjunto pequeno de itens.Para cada item na tabela, a chave é o nome do item (como monitor) e o valor é o número de itens que estão em estoque.Em um aplicativo comercial, um banco de dados deve ser usado em vez disso.
Quando a página é executada, um controle ListBox é vinculado à tabela de hash para que o controle ListBox exiba a lista de produtos.A página também contém um elemento button (não um botão de controle de servidor Web), cujo evento onclick está vinculado a uma função do cliente chamada LookUpStock.Quando usuários clicam no botão, o botão executa a função LookUpStock, que obtém a seleção atual na caixa de listagem e, em seguida, executa o retorno de chamada do cliente, ao chamar a função CallServer.
A página code-behind adiciona script do lado do cliente para a página via o método RegisterClientScriptBlock.O script que é adicionado à página inclui uma função chamada CallServer, que obtém o nome do método que irá postar de volta para o servidor a partir do método GetCallbackEventReference.
O retorno de chamada do cliente chama o método RaiseCallbackEvent, o qual determina o estoque disponível para o produto passado para ele.O método GetCallbackResult retorna o valor.Observe que os argumentos enviados entre o script de cliente e o código do servidor só pode ser sequências.Para passar ou receber vários valores, você pode concatenar valores na sequência de caracteres de entrada ou de retorno, respectivamente.
Observação de segurança: |
---|
Quando você usa esse recurso, não existem possíveis riscos de segurança.Argumentos de retorno de chamada não são validados e portanto devem ser considerados perigosos.Você sempre deve verificar o conteúdo dos argumentos antes de usá-los.Para obter detalhes, consulte:Visão Geral de Scripts Maliciosos. |
Consulte também
Tarefas
Como: Implementar Callbacks em páginas da Web do ASP.NET
Conceitos
Implementando Callbacks de Clientes Através de Programação Sem Postbacks nas Páginas ASP.NET
Retorno de chamada de cliente com exemplo de implementação de validação