2010-04-06 12 views
9

Tengo un problema con asp.net mvc 2 y el helper de html.textboxfor. i utilizar el código de seguimiento en un formulario:Problema de actualización Asp.NET MVC Html.TextBox

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

cuando el usuario envía el formulario, i validar el código postal, cuando la postal no es válido establecemos la cremallera corregido. mi modelo tiene el código postal corregido, el código html generado de asp contiene el antiguo valor zip.

muestra: usuario escribir postal: 12345 mi clase de validación, corregida teh postal a: 12346 mi modelo contiene la nueva postal: 123456, en la interfaz gráfica de usuario sólo veo 12345

¿cuál es el problema?

Respuesta

7

No puede modificar los valores en la acción de su controlador porque el ayudante siempre usará los valores POSTed al generar el cuadro de texto. Esto es por diseño y si desea solucionar lo que tendrá que escribir su propio ayudante o generar el cuadro de texto de forma manual:

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

Borrar el ModelState usando ModelState.Clear(), actualizar el objeto y luego devolverlo.

+0

Esta solución funciona para mí. ¿Tiene efectos secundarios? – chenz

Cuestiones relacionadas