2010-12-14 14 views
2

Ich habe Probleme mit dynamischen Teilansicht Daten verschwinden aus dem Textfeld nach einem httppost. Hier ist mein Szenario:MVC Dynamic Teilansicht Daten verschwinden in IE7

Der Benutzer klickt ein Optionsfeld und die Coapplicant Teilansicht wird dynamisch geladen.

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> 

Der Benutzer gibt in Daten, und klickt auf die Schaltfläche "Senden" Das Modell wird dann in der Steuerung validiert. Wenn der ModelState ungültig ist, gebe ich die Ansicht zusammen mit dem Modell in der Sitzung zurück (ich tue dies, weil ich dieses Modell zur Teilansicht zurückgeben muss. Dies war der einzige Weg, um die Daten zurück zu bekommen.). Auf httppost, in Javascript, bestimme ich, ob die Coapplicant-Teilansicht angezeigt werden soll, und wenn ja, lade ich sie erneut, indem ich showCoApplicant() aufruft.

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

Dies ist, wo ich das Problem habe. Die Daten für den Coapplicant fehlen in IE7. Es funktioniert gut in anderen Versionen von IE, Chrome und Firefox. Warum fehlen die Daten im IE7? Wie kann ich es zeigen?

Antwort

1

In Ihrem Ajax-Aufruf, versuchen Cache auf 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

Das hat den Trick! Vielen Dank!! – Trisney

0

Mehr als wahrscheinlich, Sie haben einige doof HTML erzeugt wird. Da Sie Ajax verwenden, können Sie es nicht einfach mit dem w3c-Validator ausführen, um es herauszufinden, aber vielleicht können Sie herausfinden, wie Sie die generierten Daten in der Ansicht ohne Ajax veröffentlichen können, um sie anzuzeigen oder zu validieren.

Verwandte Themen