C'est un suivi à partir de la question suivante:
MVC 3 + $.ajax - réponse semble être la mise en cache de sortie de vue partielle
Il y a une description détaillée du problème là-bas. Cependant, j'ai maintenant réussi à cerner le problème, qui semble être avec le Html.EditorFor aides, d'où la nouvelle question.
Le problème:
- Je publier des données sur le serveur à l'aide de $.ajax, puis retour dans le code html de la vue partielle qui détient les commandes d'entrée. Le problème est que, malgré l'adoption d'un objet nouvellement créé à la Vue Partielle sur le modèle, les diverses @Html.EditorFor et @Html.DropDownListFor aides de retour à l'ANCIEN DONNÉES!.
Je peux prouver que le modèle est correctement passé dans un nouvel objet pour les assistants, par l'impression de la valeur à côté du helper Html. C'est à dire:
@Html.EditorFor(model => model.Transaction.TransactionDate)
@Model.Transaction.TransactionDate.ToString()
Comme l'image ci-dessous montre, l' @Html.EditorFor est de retourner les données erronées:
[Notez que la valeur à côté de la Comentario zone de texte, une date, parce que j'ai été le tester en remplaçant les valeurs par défaut avec une valeur qui changerait à chaque post, c'est à dire, un DateTime.]
Si je remplace le @Html.EditorFor pour TransactionDate avec un simple vieux @Html.Zone de texte():
@Html.TextBox("Transaction_TransactionDate", Model.Transaction.TransactionDate)
Puis il rend le bon TransactionDate valeur pour un nouvel objet de la Transaction, c'est à dire, DateTime.MinValue (01/01/0001...).
Donc...
Le problème est avec le @Html.EditorFor aides. Le problème se produit également avec TextBoxFor et DropDownListFor.
Le problème étant que ces aides semblent cache l'ancienne valeur.
Ce que je fais mal??!
EDIT:
J'ai juste essayé de débogage dans l'Éditeur personnalisé de modèle pour les dates, et là, ViewData.TemplateInfo.FormattedModelValue montre la valeur correcte, c'est à dire, "01/01/0001". Cependant, une fois qu'il est à Fiddler, la réponse est montrant l'ancienne date, par exemple, "01/09/2011" dans l'image ci-dessus.
En conséquence, je pense juste qu'il y a de la mise en cache se passe ici, mais je n'en ai pas mis en place, donc rien ne fait aucun sens.