[Nota: Este parágrafo não tem nada a ver com o conteúdo do título e pode ser ignorado] Depois de assistir dois episódios de Stargate e tomar banho, finalmente decidi começar a escrever este artigo. Este é meu primeiro artigo técnico verdadeiramente original. Independentemente do conteúdo técnico, finalmente dei esse passo. Na verdade, abri muitos blogs, desde o primeiro ônibus do campus até o Blog Park e meu blog Sina para reclamar. Na verdade, o objetivo original de começar um blog era registrar meu processo de aprendizagem enquanto escrevia programas. Mas depois evoluiu para algo usado para reclamar. Isso pode ser considerado uma consequência da minha incapacidade de me concentrar nos estudos. Porém, como diz o ditado, não é tarde para resolver o problema. mais focado e mais focado. Guiado por esse pensamento focado, finalmente comecei a escrever programas corretamente recentemente. Desta vez, realmente deixei de lado as coisas que não queria fazer e me concentrei em escrever o código C# que gosto na linguagem de programação que conheço. os favoritos são C# e Javascript. Este último é uma linguagem de script, só recentemente me apaixonei por ela. Originalmente, pensei que fosse igual ao Basic que eu jogava quando era criança, pequeno e simples, mas acontece. Parece que, embora também seja uma linguagem de script como o VBS, na verdade há mais conteúdo oculto sob a aparência da linguagem C. Posso escrever outro artigo para descrevê-lo. .Gosto da plataforma .NET, não sei por que quando usei a linguagem C# pela primeira vez para escrever código em 2001, achei muito bonito e depois me apaixonei por ela, porém, devido a problemas ambientais. naquela época, foi interrompido por um tempo até 2004., peguei de novo, mas por mais de um ano, fiquei apenas puxando pilhas de controles e depois ajustando-os no painel de propriedades. Parecia que tinha esquecido o que. a Web parecia originalmente e, finalmente, há algo que mudou minhas memórias ---- Ajax.
As estruturas de desenvolvimento Ajax estão por toda parte. Na verdade, quando o ASP.NET 2.0 foi lançado, algum conteúdo semelhante foi integrado internamente. Ele é usado em alguns controles de dados, como GridView. ASP.NET" (versão chinesa | inglês) me fez perceber o charme das chamadas assíncronas no asp.net (o método de implementação é limitado à versão beta1, sobre a parte de retorno de chamada do script beta1, beta2 e a versão oficial Eles são diferentes do tempo com o tempo. Aqueles que estiverem interessados podem consultar o conteúdo do MSDN lançado recentemente), mas eu apenas brinquei com ele na época, usei o Atlas, então não prestei muita atenção nele. discuti ASP comigo há algum tempo. Ao implementar o ajax no .net, mencionei que a implementação do atlas é muito complicada e o que ele deseja implementar são apenas alguns conteúdos muito pequenos que não precisam ser tão problemáticos. Não estou familiarizado com a estrutura ajax do .NET além desses, naturalmente me lembrei do mecanismo de retorno de chamada de script integrado. Usando o projeto de um amigo (com seu próprio consentimento), escrevemos muito código sobre isso. , de repente descobri um problema, ou seja, o código estava muito confuso. Cada página é semelhante e apenas um parâmetro de string pode ser passado. Além da interação, precisamos usar quadros embutidos para exibir alguns dados caros. Há dois dias fui ao Haiti e comprei um livro "Ajax Advanced Language Programming". Depois de ler parte dele, de repente quis entender como implementar o retorno de chamada do script no asp.net 2.0? Na verdade, olhando para trás agora, muitos lugares no artigo "Custom Script Callback in ASP.NET" foram explicados com muita clareza. Pode-se dizer que, na época, muitas coisas estavam nas nuvens e os clientes só podiam ver o efeito. Vou postar primeiro o que considero a implementação mais simples e depois analisá-la.
Crie uma nova página Default.aspx, adicione um controle CheckBox na página e, em seguida, abra o arquivo Default.aspx.cs A classe _Default adiciona três interfaces herdadas, ICallbackContainer, ICallbackEventHandler e INamingContainer:
[Código 1]
#region ICallbackContainer member.
string pública GetCallbackScript (IButtonControl buttonControl, argumento de string)
{
throw new Exception("O método ou operação não está implementado.");
}
#endregion
#region Membros do ICallbackEventHandler
string temp;
string pública GetCallbackResult()
{
//lança nova Exception("Erro de amostra");
temperatura de retorno;
}
public void RaiseCallbackEvent(string eventArgument)
{
temp = "_____" + eventArgument + " foi bem sucedido._____";
}
#endregion
Vá para o método Page_Load da página Default.aspx.cs e adicione o seguinte código:
[Código 2]
protegido void Page_Load (remetente do objeto, EventArgs e)
{
string temp = Page.ClientScript.GetCallbackEventReference(this, "arg", "Callback", "context", "OnError", true);
string script = "função CallServer(arg,context){" + temp + "}";
Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "abc", script, verdadeiro);
CheckBox1.Attributes.Add("onclick", "CallServer('Eu chamo o Servidor ','contexto');");
}
Após editar o código CS, abra o arquivo Default.aspx e adicione o seguinte código entre <head>...</head>:
[Código 3]
<script type="texto/javascript">
função OnError(err,contexto)
{
alerta(erro);
}
função Retorno de chamada (arg, contexto)
{
alerta(argumento);
}
</script>
O controle CheckBox aqui pode ser acessado casualmente e alterado se necessário. No entanto, você pode querer prestar atenção ao usar o controle Button. Ele ativará o evento OnSubmit por padrão, portanto, pode ser necessário configurá-lo ou usar o controle. Controle HTML diretamente. O código acima pode ser considerado uma implementação mínima de retorno de chamada de script e todos são necessários.
Os controles que usam retornos de chamada básicos devem implementar três interfaces: ICallbackContainer, INamingContainer e ICallbackEventHandler. Na verdade, INamingContainer não possui conteúdo de interface que precise ser implementado. Ele apenas "identifica o controle de contêiner que cria um novo namespace de ID dentro da hierarquia de controle do objeto Page" (citado no MSDN). Quanto à interface ICallbackContainer, a explicação dada no MSDN (versão chinesa) é relativamente vaga. Alguns artigos relacionados também apresentam retornos de chamada de script e interfaces ICallbackEventHandler. Como usamos páginas como base para retornos de chamada aqui, não usamos isso. que será implementado pela interface é GetCallbackScript, mas se você estiver encapsulando seu próprio controle Ajax, esse método é muito útil. Aqui usamos apenas o método implementado por ICallbackEventHandler para processar dados, pois no método Page_Load registrei um método CallServer, e depois. Disparado no evento OnClick anexado ao CheckBox, para que possamos entender um processo de chamada mais claro.
Posteriormente [Código 3] implementei dois métodos Javascript, um é usado para tratar erros de chamada e o outro é usado para tratar as informações de retorno após a chamada ser bem-sucedida. Em [Código 1], há um trecho de código que lança uma exceção que comentei. Através deste código, posso simular a chamada do método OnError.
Até aqui vimos como implementar esta chamada. Para ser franco, esta é na verdade uma forma relativamente avançada de arrastar controles, mas como ela é implementada? Por que não vejo nada sobre XmlHttpRequest? (Acredito firmemente que esta é a melhor forma de implementar Ajax, pois este código pode ser usado em qualquer navegador que suporte Javascript. Acho que não tem nada a ver com a porta secreta)
Compilar, executar......
Clicar na caixa de seleção na página em execução exibirá "___Eu chamo o servidor com sucesso.___". Como isso é executado? Na verdade, basta clicar em "Exibir código-fonte" nesta página. Há um pequeno segredo oculto aqui. Três blocos de script são gerados automaticamente na página. Um deles é __doPostback, que é usado para lidar com o postback de eventos de controle do servidor. é o método CallSerer que acabamos de registrar usando ClientScript e também há uma tag de link para um script externo. Esta é a chave.
<script src="/TechTest/WebResource.axd?d=DE9YrizlDDq8OUlo_3rQgA2&t=632919546726295408" type="text/javascript"></script>
Abra o endereço de acordo com o endereço indicado pelo SRC acima e você poderá obter um Arquivo WebResource.axd (preencha o endereço de conexão em uma ferramenta de download como o Thunder e você pode baixá-lo, você pode ver que este arquivo realmente contém algum código Javascript:
tente)
.
{
xmlRequest = novo XMLHttpRequest();
}
pegar (e)
{
tentar
{
xmlRequest = novo ActiveXObject("Microsoft.XMLHTTP");
}
pegar (e)
{
}
}
O código parece tão familiar!
se (!useAsync)
{
se (__synchronousCallBackIndex! = -1)
{
__pendingCallbacks[__synchronousCallBackIndex] = null;
}
__synchronousCallBackIndex = callbackIndex;
}
Dentro disso? Não é isso que trata a opção de chamada assíncrona no método Page.ClientScript.GetCallbackEventReference?
Há muitos códigos úteis nele que estou pesquisando..........
Existem muitos métodos além desses. Sem rodeios, é um Ajax muito simples. O encapsulamento da estrutura inclui o processamento de eventos de controle e o processamento de solicitações de postback. Podemos fazer outros encapsulamentos com base nisso, para que ele possa ser encapsulado diretamente em um controle .NET Ajax simples como um componente do . NET durante o desenvolvimento.
Na verdade, a tecnologia Java, .NET ou PHP são todos encapsulamentos avançados de HTTP no lado do servidor, assim como a tecnologia CGI que usamos há muito tempo, e agora a tecnologia da Web é mais avançada e compreensível quando se trata de No mecanismo operacional interno do .NET, podemos romper com algumas restrições e reescrever algumas páginas ou controles para construir nosso próprio ambiente de desenvolvimento Ajax.
Eu era engenheiro de controle. Acho que o encapsulamento é uma tecnologia necessária na era das grandes fábricas. No entanto, os programadores ainda precisam se aprofundar e compreender verdadeiramente o conteúdo por trás da operação do programa para que possam desenvolver melhor a alta qualidade. programa de produtos.