Lucas K 0 Denunciar post Postado Maio 22, 2013 Bom dia galera! Estou com o seguinte problema, estou fazendo um Helper para gerar um bloco javascript, este bloco contem duas funções "OnSuccess" e "OnFailure" que seriam chamadas apos uma requisição ajax, a ideia é usar essas funções para exibir mensagens de sucesso ou falha para o usuário. O script seria este aqui, porem meu Helper gera ele de forma customizada e reutilizável <script> function OnSuccess() { $("#targetmessage").hide() $("#targetmessage").empty() $("#targetmessage").append("<div class='alert alert-success'>Tipo de ocorrencia cadastrado com sucesso!</div>") $("#targetmessage").fadeIn(1000) $("#targetmessage").fadeOut(4000) } function OnFailure(ajaxContext) { $("#targetmessage").hide() $("#targetmessage").empty() $("#targetmessage").append("<div class='alert alert-error'>Falha no cadastro do tipo de ocorrencia!</div>") $("#targetmessage").fadeIn(1000) $("#targetmessage").fadeOut(4000) } </script> o unico problema é que na saida do helper na minha view ele gera como um texto html e aparece na tela, ou seja não é interpretado como script. Esta é a saida do meu helper, onde na variavel script contem uma string com todo o script gerado acima. return MvcHtmlString.Create(script); Na view onde uso o helper ele é usado assim @Html.Meuhelper(parametros)).ToHtmlString() e já tentei assim também @Html.Meuhelper(parametros)).ToString() Alguém ai pode me dizer como se gera corretamente um javascript com um helper no razor? Obrigado Compartilhar este post Link para o post Compartilhar em outros sites
KhaosDoctor 242 Denunciar post Postado Maio 22, 2013 Acredito que você tenha que usar um scriptmanager para interpretar esse script ai. Compartilhar este post Link para o post Compartilhar em outros sites
Lucas K 0 Denunciar post Postado Maio 22, 2013 estou fazendo com MVC, scriptmanager não é só para Forms? Compartilhar este post Link para o post Compartilhar em outros sites
Lucas K 0 Denunciar post Postado Maio 22, 2013 Resolvido.. mudei a forma de gerar o script dentro do helper e ficou desta forma public static MvcHtmlString MeuHelper(this HtmlHelper htmlHelper, string targetId, AjaxMessageUserConfig config) { #region script StringBuilder sb = new StringBuilder(); sb.Append("<script language='javascript'>"); sb.Append("function OnSuccess() {"); sb.AppendFormat("$('#{0}').hide();", targetId); sb.AppendFormat("$('#{0}').empty();", targetId); sb.AppendFormat("$('#{0}').append(\"{1}\");", targetId, config.messageOnSuccess); sb.AppendFormat("$('#{0}').fadeIn(1000);", targetId); sb.AppendFormat("$('#{0}').fadeOut(4000);", targetId); sb.Append("}"); sb.Append("function OnFailure() {"); sb.AppendFormat("$('#{0}').hide();", targetId); sb.AppendFormat("$('#{0}').empty();", targetId); sb.AppendFormat("$('#{0}').append(\"{1}\");", targetId, config.messageOnFailure); sb.AppendFormat("$('#{0}').fadeIn(1000);", targetId); sb.AppendFormat("$('#{0}').fadeOut(4000);", targetId); sb.Append("}"); sb.AppendFormat("</script>"); #endregion return MvcHtmlString.Create(sb.ToString()); } E na saida do helper dentro da view não estou mais usando como antes //Forma anterior @Html.Meuhelper(parametros)).ToString() @Html.Meuhelper(parametros)).ToHtmlString() Agora estou retornando direto .. @Html.Meuhelper(parametros)) E esta funcionando certinho! OBS: Antes estava faltando ";" no final de cada comando javascript gerado e também tive que ajustar as aspas que acabavam dando conflito com o conteúdo que ia no ".Append", então ficou assim .append(\"{1}\") com os caracteres de escape. Se alguem estiver a mesma dúvida ta ai.. abraço Compartilhar este post Link para o post Compartilhar em outros sites