Qual é o equivalente a IScriptControl para Web.UI.Page?
-
23-09-2019 - |
Pergunta
Temos usado IScriptControl para vincular objetos javascript aos nossos UserControls e ServerControls e funcionou bem.
O problema é que o ASP.NET parece não fornecer nenhum método para vincular um objeto javascript a uma página.Até agora, colocamos funções simples no namespace global, mas estou desenvolvendo uma séria alergia a essa prática.
Seria fácil agrupar nossas funções em uma classe javascript e incluir o arquivo javascript na página, mas como instanciar o objeto, como referenciá-lo a partir de eventos de retorno de chamada e como passar dados para ele a partir do código -atrás, ainda não descobri.
Ou melhor, os métodos que usamos até agora (campos ocultos, strings javascript emitidas, etc.) realmente me incomodam.
Alguém tem ideias melhores?
Solução
Não há nenhuma associação entre o arquivo JS e a página, a menos que você a construa.Com controles de script, a prática comum para armazenar estado são campos ocultos (o ACT usa essa abordagem).As únicas outras maneiras de se comunicar com o servidor é através de uma chamada de serviço da web, dados postados em formulário ou invocando um __doPostBack (mas isso não é AJAX).
Você pode criar alguma arquitetura básica para vincular os dois.Com controles de script, o servidor renderiza uma instrução $create para passar propriedades e manipuladores de eventos do servidor para o cliente;os dados postados de volta no servidor são armazenados em variáveis ocultas e processados no cliente (com a maioria das bibliotecas de script), portanto, os controles de script e o ACT ocultam muito disso para você, e você teria que construir um pouco disso se quisesse. automatizar isso.Pode ser útil estudar a interação cliente-servidor para lhe dar ideias sobre o que fazer se quiser personalizar isso.
Engraçado, eu estava pensando na mesma coisa para meu projeto Nucleo (uma biblioteca minha de terceiros) no codeplex, mas ainda não consegui fazer isso.