2010-04-06 12 views
9

J'ai un problème avec asp.net mvc 2 et le html.textboxfor helper. i utilise le code de suivi sous une forme:Asp.NET MVC Html.TextBox problème d'actualisation

<%= Html.TextBoxFor(model => model.Zip, new { @class = "txt", id = "zip", tabindex = 1 })%> 

lorsque l'utilisateur envoie le formulaire, i valider le code postal, lorsque le zip est invalide, nous fixons le zip corrigé. mon modèle a le zip corrigé, le code html généré à partir de ASP contient l'ancienne valeur zip.

échantillon: utilisateur zip écriture: 12345 ma classe de validation, corrigée Teh zip: 12346 mon modèle contient le nouveau zip: 123456, sur le graphique que je ne vois que 12 345

quel est le problème?

Répondre

7

Vous ne pouvez pas modifier les valeurs dans votre action de contrôleur car l'assistant utilisera toujours les valeurs POSTed lors de la génération de la zone de texte. Ceci est par la conception et si vous voulez contourner il vous devrez écrire votre propre aide ou générer la zone de texte manuellement:

<input 
    type="text" 
    name="Zip" 
    value="<%= Html.Encode(Model.Zip) %>" 
    class="txt" 
    id="zip" 
    tabindex="1" 
/> 
2

Effacer la ModelState en utilisant ModelState.Clear(), mettez à jour votre objet, puis le retourner.

+0

Cette solution de contournement fonctionne pour moi. Est-ce que cela a des effets secondaires? – chenz