Question

J'ai une page Web C # ASP.NET avec un formulaire de téléchargement de fichier xml. Lorsque le téléchargement de l' 'utilisateur clique, une alerte de confirmation javascript apparaîtra demandant à l'utilisateur, « est-ce fichier correct? ». L'alerte de confirmation ne sera activée que si le nom de fichier ne contient pas une valeur de l'un des autres champs de formulaire.

Quelle est la meilleure façon de combiner l'utilisation d'un C # formulaire ASP.NET et une alerte de confirmation javascript qui est activé si le nom d'un fichier en cours de téléchargement ne répond pas à certains critères?

Était-ce utile?

La solution

Je suppose que vous mettez la valeur de chaîne valide dans un champ caché (vous ne l'avez pas mentionné). Mettre en œuvre OnClientClick pour le bouton Ajouter:

<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>

EDIT: - En ce qui concerne <%= file1.ClientID %>.

Il sera remplacé par le côté client ID du contrôle de téléchargement de fichiers comme ctl00$ctl00$cphContentPanel$file1. Il met le script sur les stéroïdes par rapport à l'utilisation de quelque chose comme $("input[id$='file1']"). Pour plus d'informations s'il vous plaît voir

Autres conseils

Il n'y a pas beaucoup que vous devez faire avec C # pour cette page, il semble que la plupart de cela se fera sur le côté client.

Ajoutez le contrôle fileupload et un bouton à votre formulaire .aspx. Définissez la propriété OnClientClick du bouton à quelque chose comme

OnClientClick = "return myFunction()"

et puis écrire une fonction javascript comme:

function myFunction()
{
   // Check other text values here

   if (needToConfirm){
      return confirm('Are you sure you want to upload?');
   }
   else return true;
}

Assurez-vous que « myFunction () » retourne false si vous souhaitez annuler le postback (à savoir l'utilisateur a cliqué sur « non » dans la boîte de dialogue de confirmation). Ceci annulera la postback s'ils cliquent sur « Non ».

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;
  }
}

J'ai eu des problèmes de mise en œuvre ce genre de chose à travailler dans IE et FireFox en raison des événements manière dont il fonctionne ces navigateurs. Quand je suis arrivé à travailler dans l'un d'eux, l'autre encore causer un postback même si j'annule.

Voici ce que nous avons dans notre code (le test du navigateur a été volé d'ailleurs).

if (!window.confirm("Are you sure?"))
{
    if (/MSIE (\d+\.\d+);/.test(navigator.userAgent))
        window.event.returnValue = false;
    else
        e.preventDefault();
}

En plus d'utiliser la validation côté client, vous devez également ajouter un CustomValidator pour fournir une validation sur le côté serveur. Vous ne pouvez pas faire confiance que l'utilisateur a Javascript activé, ou que l'utilisateur n'a pas contournées vos chèques Javascript.

scroll top