Hoje veremos como exibir para o usuário quais os passos que o programa faz durante um processo referente a regra de negocio.
A finalidade é mostrar o que esta sendo feito pois as vezes o program pode demorar um pouco para responder devido a um processo na maquina ou até um envio de e-mail.
Crie um novo WebApplication no visual Studio.
A finalidade é mostrar o que esta sendo feito pois as vezes o program pode demorar um pouco para responder devido a um processo na maquina ou até um envio de e-mail.
Crie um novo WebApplication no visual Studio.
Na pagina Default.aspx da aplicação vamos colocar alguns campos simples para simular um formulário.
Ex:
<style type="text/css"> .campo{
padding:5px; float:left; } </style>
<script language="javascript" type="text/javascript"> function RespostaServidor(ResultString) { var result = document.getElementById("result"); result.innerHTML = ResultString; } function SalvarDados() { var form = new GetForm() PageMethods.Salvar(form, RespostaServidor); PageMethods.EnviarEmail(RespostaServidor); PageMethods.Concluir(RespostaServidor); } function GetForm() { this.Nome = $get("txbNome").value; this.Telefone = $get("txbTelefone").value; this.Email = $get("txbEmail").value; } </script>
<div class="campo"> Nome <input id="txbNome" type="text" /> </div> <div class="campo"> Telefone <input id="txbTelefone" type="text" /> </div> <div class="campo"> E-mail <input id="txbEmail" type="text" /> </div> <div> <input onclick="SalvarDados();" type="button" value="Salvar" /> <span id="result"></span> </div>
A classe JavaScript "GetForm()" é um modelo para capturar os dados do formulário, e é recebida pelo C# no tipo "Dictionary<string,string>".
Criei um WebMethod para cada ação que será executada pelo servidor e as utilizei na função javascript "SalvarDados()" que por sua vez armazena a resposta do servidor em uma outra função "RespostaServidor(ResultString)" apresentando a resposta do webMethod na tag <span id="result"></span>.
Para simular o tempo de processo no servidor utilizei Thread.Sleep(3000);
Veja na listagem a baixo como ficaram os webMethods:
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.Threading; using System.Web.Services; namespace TesteAssincronoMetodos { public partial class _Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { } public string PublicRetorno(Dictionaryform, string text) { switch (text) { case "Inicio" : text = "Salvando dados do usuário "+form["Nome"]; break; case "Enviando Email...": text = "Enviando Email " + form["Email"] + "..."; Thread.Sleep(3000); break; case "Concluido": Thread.Sleep(3000); break; } return text; } #region WebMethods [WebMethod] public static string Salvar(Dictionary jsForm) { Form_ = jsForm; string msg = new TesteAssincronoMetodos._Default().PublicRetorno(jsForm,"Inicio"); return msg; } [WebMethod] public static string EnviarEmail() { string msg = new TesteAssincronoMetodos._Default().PublicRetorno(Form_, "Enviando Email..."); return msg; } [WebMethod] public static string Concluir() { string msg = new TesteAssincronoMetodos._Default().PublicRetorno(null,"Concluido"); return msg; } #endregion public static Dictionary Form_ { get; set; } } }
É isso ai galera qualquer duvida ou sugestão basta entrar com contato.
Comments