2010-09-24 3 views
1

J'ai une vue simple qui a 2 zones de texte et 1 entrée de fichier.Retour d'une vue contenant un fichier de type d'entrée - Erreur d'exécution de Microsoft JScript: Objet attendu

<%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage<iLoyalty.BackOfficePortal.Models.SegmentModel>" %> 

<% using (Html.BeginForm("SaveSegment", "Segment", FormMethod.Post, new { id = "SegmentForm", enctype = "multipart/form-data" })) 
    { %> 
<div class="StContent"> 
    <h3> 
     <%= iLoyalty.BackOfficePortal.Globals.GetResourceText("CardSegmentInsert")%></h3> 
    <br /> 
    <%= Html.HiddenFor(model => model.ApplicationName, new { id = "ApplicationName" })%> 
    <%--<%= Html.HiddenFor(model => model.SegmentID, new { id = "SegmentID" })%>--%> 
    <table width="95%" border="0" cellspacing="1" cellpadding="4" class="Table" style="margin: 0 0 0 10px"> 
     <tr class="Tr0"> 
      <td style="width: 200px" class="Tr1"> 
       <%= iLoyalty.BackOfficePortal.Globals.GetResourceText("ApplicationName")%> 
      </td> 
      <td> 
       <span id="ApplicationName"> 
        <%= Model.ApplicationName %></span> 
      </td> 
     </tr> 
     <tr class="Tr0"> 
      <td style="width: 200px" class="Tr1"> 
       <%= iLoyalty.BackOfficePortal.Globals.GetResourceText("CardSegmentName")%> 
      </td> 
      <td> 
       <%= Html.TextBoxFor(model => model.SegmentName, new { id = "SegmentName", @class = "txtBox" })%> 
      </td> 
     </tr> 
     <tr class="Tr0"> 
      <td style="width: 200px" class="Tr1"> 
       <%= iLoyalty.BackOfficePortal.Globals.GetResourceText("RewardRate")%> 
      </td> 
      <td> 
       <%= Html.TextBoxFor(model => model.GainRate, new { id = "GainRate", @class = "txtBox" })%> 
      </td> 
     </tr> 
     <tr class="Tr0"> 
      <td style="width: 200px" class="Tr1"> 
      </td> 
      <td> 
       <input name="PostedFile" id="PostedFile" type="file" class="txtBox" style="width: 200px" /> 
      </td> 
     </tr> 
     <tr class="Tr0"> 
      <td class="Tr1" colspan="2" style="text-align: right"> 
       <input id="saveBtn" type="submit" class="button" value='<%= iLoyalty.BackOfficePortal.Globals.GetResourceText("Add")%>' /> 
      </td> 
     </tr> 
    </table> 
</div> 
<script type="text/javascript"> 
    $(document).ready(function() { 
     $('#saveBtn').click(function() { 
      //BlockPage(); 
      var options = { 
       target: '#contentDiv', 
       success: function() { 
        BlockDivSuccess('generalCover'); 
       } 
      }; 
      $('#SegmentForm').ajaxForm(options); 
     }); 
    }); 
</script> 
<% } %> 

Après avoir cliqué sur saveBtn Je vois que en mode débogage il affiche les données appropriées à l'action appropriée et il fonctionne bien. Et dans firebug je vois la réponse à l'appel ajax est juste comme ce que je m'attends à avoir. Mais seulement dans -à-dire je reçois une erreur javascript qui dit simplement: Erreur d'exécution Microsoft JScript: objet attendu

Après avoir supprimer la ligne ci-dessus, tout est ok dans tous les navigateurs. Mais j'ai besoin de ça aussi.

<input name="PostedFile" id="PostedFile" type="file" class="txtBox" style="width: 200px" /> 

Avez-vous une idée sur ce problème? Il est intéressant que cela se produise seulement dans ie.

alt text

Merci à l'avance,

+0

Peut-on voir la définition de 'BlockDivSuccess'? – belugabob

+0

Je ne pense pas que la source du problème est 'BlockDivSuccess'. Je l'utilise aussi dans d'autres vues. Et si je commente la ligne qui appelle 'BlockDivSuccess', le problème se produit à nouveau. – anilca

+0

Le contenu que vous renvoyez de l'appel ajax inclut-il déjà un élément avec un id = "fichier_affiché"? ie se plaindra si vous essayez de dupliquer des ID dans une requête ajax – Clicktricity

Répondre

1

Il suffit de fixer votre débogueur Visual Studio pour traiter IE et vous pouvez voir que le javascript variable est nulle.

Ouvrez le menu Déboguer, choisissez Attacher au processus ..., sélectionnez iexplore.exe dans la liste des processus en cours d'exécution, puis cliquez sur Joindre. Assurez-vous que la zone de texte 'Attacher à:' indique Script sinon cliquez sur le bouton Sélectionner ... et choisissez-le.

Assurez-vous également que le débogage de script n'est pas désactivé dans IE.

Voir: http://www.jonathanboutelle.com/how-to-debug-javascript-in-internet-explorer

+0

Merci pour votre suggestion, j'ai essayé, mais je ne pouvais pas trouver l'élément nul. Il montre le même dialogue que je partage dans ma question. Y a-t-il autre chose à faire? – anilca

+0

Cliquez sur "Break" dans la fenêtre de dialogue que vous venez d'ajouter - il débutera une session de débogage directement dans la ligne fautive ;-) –

Questions connexes