2010-12-14 96 views
2

J'ai des problèmes avec les données de vue partielle dynamique disparaissant de la zone de texte après un httppost. Voici mon scénario:Données de vue partielle dynamique MVC disparaissant dans IE7

L'utilisateur clique sur un bouton radio et la vue partielle co-active est chargée dynamiquement.

Index.aspx (embedded Javascript):

function showCoApplicant() { 
$.ajax({ 
    type: "GET", 
    url: '<%= Url.Action("LoadCoApplicantInfo","Application") %>', 
    data: {}, 
    dataType: "html", 
    async: true, 
    success: function (data) { 
    $("#CoApplicantInfo").html(data); 
    } 
}); } 

ApplicationController.cs:

public ActionResult LoadCoApplicantInfo() { 
Configurator.Models.CreditApplicationModel model = null; 
if (Session["model"] != null) 
    model = (Configurator.Models.CreditApplicationModel)Session["model"]; 

return PartialView("CoApplicant", model); 
} 

CoApplicant.ascx:

<table> 
<tr> 
    <th> 
    <%= Html.LabelFor(model => model.CoApplicant.FirstName)%> 
    </th> 
    <td>  
    <%= Html.TextBoxFor(model => model.CoApplicant.FirstName)%> 
    <%= Html.ValidationMessageFor(model => model.CoApplicant.FirstName)%> 
    </td> 
</tr> 
</table> 

L'utilisateur entre des données, et clique sur le bouton de soumission. Le modèle est ensuite validé dans le contrôleur. Si ModelState n'est pas valide, je renvoie la vue avec le modèle en cours de session (je le fais parce que j'ai besoin de retourner ce modèle à la vue partielle, c'était la seule façon de récupérer les données). Sur httppost, en Javascript, je détermine si la vue partielle coapplicant devrait être montrée, et si oui, je la charge encore en appelant showCoApplicant().

[HttpPost] 
public ActionResult Index(Configurator.Models.CreditApplicationModel model) 
{ 
if (!ModelState.IsValid) 
{ 
    Session["model"] = model; 
     return View(); 
} 
} 

C'est là que j'ai le problème. Les données pour le coapplicant sont manquantes dans IE7. Cela fonctionne très bien dans d'autres versions d'IE, Chrome et Firefox. Pourquoi les données manquent dans IE7? Comment puis-je le montrer?

Répondre

1

Dans votre appel ajax, essayez de cache false:

function showCoApplicant() { 
    $.ajax({ 
    type: "GET", 
    cache: false, 
    url: '<%= Url.Action("LoadCoApplicantInfo","Application") %>', 
    data: {}, 
    dataType: "html", 
    async: true, 
    success: function (data) { 
    $("#CoApplicantInfo").html(data); 
    } 
    }); } 
+1

Cela a fait l'affaire! Merci!! – Trisney

0

Plus, vous avez probablement un peu loufoque HTML généré. Parce que vous utilisez ajax, vous ne pouvez pas simplement l'exécuter sur le validateur w3c pour le savoir, mais vous pouvez peut-être trouver un moyen de publier les données générées dans la vue sans ajax pour pouvoir l'afficher ou le valider.