Vue pas mise à jour après le post
J'ai une méthode de contrôleur CreateOrUpdate, cette méthode est censée sauver la voiture à la base de données, puis de retour en tant que normale.
public ActionResult CreateOrUpdate(int ID = 0)
{
Car car = new Car(ID);
}
[HttpPost]
public ActionResult CreateOrUpdate(Car car)
{
car.Save();
return View(car);
}
Dans le theCar.Méthode Save (), j'ai mis l'id de la voiture, avec tout ce que l'id dans la base de données après que la voiture est enregistrée (en faisant un insert-je utiliser SCOPE_IDENTITY(), la méthode save fonctionne bien, et si j'ai de débogage et de regarder les valeurs de la voiture, après la Save() est appelée, le code est correct. Mais quand la Vue est rendue à l'ID est 0 dans la vue.
Quelqu'un pourrait-il m'aider et me dire pourquoi cela arriverait. Suis-je pas penser à changer le Modèle de la vue dans la méthode HTTP POST ? Devrais-je Plutôt rediriger vers l'original CreateOrUpdate() la méthode si l'enregistrement a réussi.
- essayez sans avoir
theCar.Save();
ligne. - theCar.Save() enregistre uniquement le modèle. Ce n'est pas le problème. Même si j'ai mis une propriété de la classe dans le HttpPost méthode, sans la theCar.Méthode Save (). La propriété n'est pas reflété dans l'affichage
- Pour info: Dans le cas où vous avez sauvegardé les données avec succès et voulez afficher la page pouvez suivre le Post/Redirect/Get modèle. en.wikipedia.org/wiki/Post/Redirect/Get
Vous devez vous connecter pour publier un commentaire.
il devrait être le ModelState problème.
si vous utilisez Html pour Affichage de la valeur de l'id.
Par défaut HtmlHelper affichage ModelState valeur de Modèle.
Essayez le modèle d'affichage de la valeur en vue
ou Nettoyer ModelState Valeur dans le contrôleur
ou réinitialiser la valeur de l'id après SaveChange.
Réinitialiser la valeur du textarea après la soumission du formulaire
ModelState["MyModelProperty"].Value = null;
combiné avecmodel.MyModelProperty = null;
(pour la maintenance d'état) a fait le tour de ma question. Merci pour ce!ModelState.Clear()
l'a fait pour moi, merci!J'ai ajouté
ModelState.Clear()
à mon HttpPost méthode de Contrôleur, comme on le voit dans ce post Html helpers obtenir les données à partir du modèle de l'état et non pas à partir du modèle si vous retournez le même point de vue, après le post de formulaire. pour obtenir des données à jour dans la vue poste de redirection obtenir de modèle ou de ModelState.Clear()et il a résolu le problème.
Grâce
Je n'ai pas envie de vider le ModelState parce que je nécessaire à l'affichage des erreurs, alors je suis allé avec