Frage

Ich habe eine C# ASP.NET -Webseite mit einem XML -Datei -Upload -Formular. Wenn der Benutzer auf "Upload" klickt, wird ein JavaScript -Bestätigungswarnungswarnungswarnungswarnungswechsel gefragt: "Ist diese Datei korrekt?". Die Bestätigungswarnung aktiviert nur, wenn der Dateiname keinen Wert aus einem der anderen Formularfelder enthält.

Was ist der beste Weg, um die Verwendung eines C# ASP.NET -Formulars und eines JavaScript -Bestätigung zu kombinieren, das aktiviert wird, wenn der Name einer hochgeladenen Datei nicht bestimmte Kriterien erfüllt?

War es hilfreich?

Lösung

Ich nehme an, Sie setzen den Wert einer gültigen Zeichenfolge in einem versteckten Bereich (Sie haben nicht erwähnt). Implementieren OnClientClick Für Upload -Schaltfläche:

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

Bearbeiten:- bezüglich <%= file1.ClientID %>.

Dies wird durch die Client -Seiten -ID der Datei -Upload -Steuerung ersetzt ctl00$ctl00$cphContentPanel$file1. Es bringt das Skript auf Steroide, um so etwas wie zu verwenden $("input[id$='file1']"). Weitere Informationen finden Sie unter Dave Wards 'Post.

Andere Tipps

Es gibt nicht viel, was Sie mit C# für diese Seite zu tun haben, es hört sich so an, als würden die meisten davon auf der Client -Seite geschehen.

Fügen Sie die Datei -Pload -Steuerung und eine Schaltfläche zu Ihrem .aspx -Formular hinzu. Stellen Sie die OnclientClick -Eigenschaft der Taste auf so etwas wie ein

OnClientClick = "return myFunction()"

und schreiben Sie dann eine JavaScript -Funktion wie:

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

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

Stellen Sie sicher, dass "myfunction ()" false zurückgibt, wenn Sie den Postback abbrechen möchten (dh der Benutzer klickte im Dialogfeld Bestätigung). Dadurch wird der Postback abgesagt, wenn sie auf "Nein" klicken.

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

Ich hatte Probleme, diese Art von Dingen zu implementieren, um sowohl in IE als auch in Firefox zu arbeiten, weil Ereignisse in diesen Browsern funktionieren. Als ich es dazu gebracht hatte, in einem von ihnen zu arbeiten, würde der andere immer noch einen Postback verursachen, selbst wenn ich abgesagt würde.

Hier ist, was wir in unserem Code haben (der Browser -Test wurde von anderer Stelle gestohlen).

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

Zusätzlich zur Verwendung der Client -Seitenvalidierung sollten Sie einen benutzerdefinierten Validator hinzufügen, um Validierung auf der Serverseite bereitzustellen. Sie können nicht vertrauen, dass der Benutzer JavaScript eingeschaltet hat oder dass der Benutzer Ihre JavaScript -Überprüfungen nicht umgangen hat.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top