Quelqu'un peut-il me donner une brève définition du rôle de la ModelState dans Asp.net MVC (ou un lien vers une). En particulier, j'ai besoin de savoir dans quelles situations il est nécessaire ou souhaitable pour appeler ModelState.Clear()
.
Peu ouvertes hein... désolé, je pense que cela pourrait aider si vous dire ce que je suis acutally faire:
J'ai une Action de Modifier un Contrôleur appelé "Page". Quand j'ai d'abord voir le formulaire pour modifier la Page de détails tout de charges fines (liaison à un "MyCmsPage" de l'objet). Ensuite je clique sur un bouton qui génère une valeur pour l'un des MyCmsPage de l'objet de champs (MyCmsPage.SeoTitle
). Il génère de l'amende et des mises à jour de l'objet et j'ai ensuite retourner le résultat action avec le nouveau modifié la page de l'objet et d'en attendre pertinentes de la zone de texte (rendu à l'aide d' <%= Html.TextBox("seoTitle", page.SeoTitle)%>
) à être mis à jour ... mais, hélas, il affiche la valeur de l'ancien modèle qui a été chargé.
J'ai travaillé autour d'elle en utilisant ModelState.Clear()
mais j'ai besoin de savoir pourquoi / comment il a travaillé, donc je ne suis pas juste de le faire à l'aveuglette.
PageController:
[AcceptVerbs("POST")]
public ActionResult Edit(MyCmsPage page, string submitButton)
{
// add the seoTitle to the current page object
page.GenerateSeoTitle();
// why must I do this?
ModelState.Clear();
// return the modified page object
return View(page);
}
Aspx:
<%@ Page Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<MyCmsPage>" %>
....
<div class="c">
<label for="seoTitle">
Seo Title</label>
<%= Html.TextBox("seoTitle", page.SeoTitle)%>
<input type="submit" value="Generate Seo Title" name="submitButton" />
</div>