TextBoxFor valeur pas mise à jour après le post
J'ai une simple vue fortement typée, mais je ne peux pas semblent de mise à jour d'une zone de texte sur ma forme après un post.
Voici mon modèle:
public class Repair
{
public string Number { get; set; }
}
Et, à mon avis, est une zone de texte:
@Html.TextBoxFor(x => x.Number)
Je suis en train de mettre à jour la zone de texte après un post pour mon contrôleur:
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Index(Repair r)
{
r.Number = "New Value";
return View(r);
}
Même si je suis paramètre de Numéro d'une nouvelle valeur, le texte dans la zone de texte ne change pas. Ce que je fais mal?
OriginalL'auteur broke | 2013-08-27
Vous devez vous connecter pour publier un commentaire.
Utilisation
ModelState.Clear()
avant le réglage de la valeurOriginalL'auteur Satpal
Lorsque vous postez un modèle vers un ActionResult et retour le même point de Vue, les valeurs pour le modèle objets sont contenus dans le ModelState. Le ModelState est ce qui contient de l'information sur valide/non valide les champs ainsi que les valeurs envoyées. Si vous voulez mettre à jour une valeur de modèle, vous pouvez le faire de deux choses l'une:
ModelState.Clear()
ou
ModelState["Number"].Value = new ValueProviderResult("New Value", "New Value", CultureInfo.CurrentCulture)
mis à jour avec la syntaxe correcte. Voici la MSDN sur le ValueProviderResult - msdn.microsoft.com/en-us/library/.... Merci pour le heads up!
Merci pour la mise à jour!
OriginalL'auteur Tommy
De mes rapports avec la question, je pense que c'est par la conception d'un bogue dans le cadre. OMI:
ne devrait PAS prendre la valeur de
ModelState
mais plutôt directement à partir du modèle. Au moins ce serait mon attente, lorsque je modifier le modèle etreturn View(model)
.n'est pas une réponse, car il assainit
ModelState
effacement ValidationSummary. La suppression d'une clé deModelState
est ni bonne, car elle élimine ValidationSummary pour cette clé.est correct mais trop arcanes. Ainsi, dans de tels cas, ma préférence irait à utiliser:
au lieu de
C'est la réponse la plus complète de l'OMI. ModelState.Clear() a autant d'effets secondaires et ils ne sont pas correctement expliqués dans la accepté de répondre.
OriginalL'auteur Vlad
Si vous trouvez ModelState.Clear() pour être trop destructeurs, vous pouvez cibler uniquement l'élément que vous sont en train de changer, tout en préservant le reste avec ModelState.Remove()
Aussi, il semble qu'il n'importe pas à le Supprimer() ou Désactivez() si vous appelez la méthode avant de mettre à jour votre modèle ou après
OriginalL'auteur Kevin McCabe
De l'essayer. Vous pouvez le mettre dans un contrôleur de base si vous le souhaitez. Cela fonctionne bien pour moi. Il fait tellement discret validation fonctionne toujours, mais les valeurs du modèle montrent bien comme PRÉVU.
OriginalL'auteur Pangamma