2009-08-13 8 views
0

Formular übergeben Ich habe ein ASP.NET MVC Ajax Formular vollständig auf FireFox arbeiten. Hier ist, wie der Code wie folgt aussieht:MVC Ajax Formular nicht auf IE

 

<% using (Ajax.BeginForm("SendMessage", "Contact", new AjaxOptions { OnComplete = "ProcessResult" })) { %> 
<div id="inputArea"> 
    <label for="Name" class="contactLabel">Your Name:</label> 
    <%= Html.TextBox("SenderName", Model.Contact.SenderName)%> 
    <label for="Email" class="contactLabel">Your Email:</label> 
    <%= Html.TextBox("Email", Model.Contact.Email)%> 
    <label for="Subject" class="contactLabel">Subject:</label> 
    <%= Html.TextBox("Subject", Model.Contact.Subject)%> 
    <label for="Message" class="contactLabel">Message:</label> 
    <%= Html.TextArea("Message", Model.Contact.Message)%> 
</div> 
<input type="submit" value="Send" id="submitButton" onclick="allowSubmit(false);" /> 
<span id="operationMessage"></span> 
 

Es gibt zwei zusätzliche Javascripts, eine für das Deaktivieren der Submit-Button (lassen Benutzer nur einmal drücken) und die andere ist für die Verarbeitung des Servers Ergebnis:

 

    function ProcessResult(content) { 

     var json = content.get_response().get_object(); 
     var result = eval(json); 

     $("#operationMessage > span").empty(); 
     $("#operationMessage > ul").empty(); 
     $(':input').removeClass('input-validation-error'); 

     if (result.Successfull) { 
      $('#operationMessage').append('<span><br>' + result.Message + '</span>') 
            .removeClass('error') 
            .addClass('success'); 
     } 
     else { 

      $('#operationMessage').append('<span><br>' + result.Message + '') 
            .removeClass('success') 
            .addClass('error'); 

      for (var err in result.Errors) { 
       var propertyName = result.Errors[err].PropertyName; 
       var errorMessage = result.Errors[err].Error; 
       var message = propertyName + ' ' + errorMessage; 

       $('#' + propertyName).addClass('input-validation-error'); 
       $('#operationMessage > ul').append('<li># ' + message + '</li>'); 
      } 
     } 

     allowSubmit(true); 
    } 

    function allowSubmit(enabled) { 
     if (!enabled) { 
      $('#submitButton').attr('disabled', 'disabled'); 
     } 
     else { 
      $('#submitButton').removeAttr('disabled'); 
     } 
    } 
 

Ich habe alles funktioniert FireFox, aber als ich es auf IE getestet wurde, hat es nicht funktioniert. Sobald ich auf die Schaltfläche "Senden" im Internet Explorer drückte, wurde (korrekt) deaktiviert, aber es gab keinen Serveraufruf, was bedeutet, dass die Serverfunktion auf dem MVC-Controller nie aufgerufen wurde.

Jede Hilfe wird sehr geschätzt.

+0

Alle Javascript-Fehler auf der Seite? – womp

+0

scheinbar nichts. Versuchte es mit den Javascript-Fehlerbenachrichtigungen des IE eingeschaltet. –

+0

versucht, Ajax-Formular zu entfernen: mit (Html.BeginForm ("SendMessage", "Kontakt")) { ... und das funktioniert auch nicht auf meinem IE (funktioniert auf FF). Also wahrscheinlich ist das nicht mit Ajax verwandt. Habe es auch auf dem IE einer anderen Maschine versucht, funktioniert dort auch gleich. –

Antwort

1

Okay ... herausgefunden, was das Problem ist, aber warum das unterschiedliche Verhalten zwischen IE und FF ... Wenn Sie die Schaltfläche SUBMIT ONCLICK-Ereignis deaktivieren, wird der gesamte Server-Aufruf nicht auf IE passieren (während es macht auf FF). Also, einfach, indem Sie den onclick Event-Handler auf der Seite löschten, funktionierte es.

Verwandte Themen