C# .NET e JavaScript confirmam
-
18-09-2019 - |
Pergunta
Eu tenho uma página da web c# asp.net com um formulário de upload de arquivo xml. Quando o usuário clica em 'Upload', um JavaScript Confirm Alert será exibido perguntando ao usuário: "Este arquivo está correto?". O alerta de confirmação será ativado apenas se o nome do arquivo não contiver um valor de um dos outros campos de formulário.
Qual é a melhor maneira de combinar o uso de um formulário C# ASP.NET e um JavaScript Confirme o alerta que é ativado se o nome de um arquivo que está sendo carregado não atende a determinados critérios?
Solução
Suponho que você está colocando o valor da string válida em um campo oculto (você não mencionou). Implemento OnClientClick
para o botão de upload:
<asp:button .... OnClientClick="return confirmFileName();"/>
<script type="text/javascript">
function confirmFileName()
{
var f = $("#<%= file1.ClientID %>").val();
var s=$("#<%= hidden1.ClientID %>").attr("value");
if (f.indexOf(s) == -1) {
if (!confirm("Is this correct file?")) {
$("#<%=file1.ClientID %>").focus();
return false;
}
}
return true;
}
</script>
Editar:- sobre <%= file1.ClientID %>
.
Isso será substituído pelo ID do lado do cliente do controle de upload do arquivo como ctl00$ctl00$cphContentPanel$file1
. Ele coloca o script em esteróides em relação ao uso de algo como $("input[id$='file1']")
. Para mais informações, consulte Postagem de Dave Wards.
Outras dicas
Não há muita coisa que você precisa fazer com C# para esta página, parece que a maior parte disso será feita no lado do cliente.
Adicione o controle FileUpload e um botão ao seu formulário .aspx. Defina a propriedade OnClientClick do botão para algo como
OnClientClick = "return myFunction()"
e então escreva uma função de JavaScript como:
function myFunction()
{
// Check other text values here
if (needToConfirm){
return confirm('Are you sure you want to upload?');
}
else return true;
}
Verifique se "myfunction ()" retorna false se você deseja cancelar o postback (ou seja, o usuário clicou "não" na caixa de diálogo Confirmar). Isso cancelará o postback se eles clicarem em "Não".
window.onload = function() {
document.forms[0].onsubmit = function() {
var el = document.getElementById("FileUpload1");
var fileName = el.value;
if(fileName.indexOf("WHATEVER_VALUE") == -1) {
if(!confirm("Is the file correct?")) {
el.focus();
return false;
}
}
return true;
}
}
Eu tive problemas para implementar esse tipo de coisa para trabalhar no IE e no Firefox por causa da maneira como os eventos funcionam nesses navegadores. Quando o fiz funcionar em um deles, o outro ainda causava um postback, mesmo que eu cancelasse.
Aqui está o que temos em nosso código (o teste do navegador foi roubado de outros lugares).
if (!window.confirm("Are you sure?"))
{
if (/MSIE (\d+\.\d+);/.test(navigator.userAgent))
window.event.returnValue = false;
else
e.preventDefault();
}
Além de usar a validação do lado do cliente, você também deve adicionar um CustomValidator para fornecer validação no lado do servidor. Você não pode confiar que o usuário tenha ativado o JavaScript ou que o usuário não ignorou suas verificações JavaScript.