2010-09-02 13 views
6

Esto es muy extraño y no sé por qué. Tengo un modelo de vista que devuelven algún valor para mi objeto, cuando la prestación, lo tienen valores diferentes, sin embargo, que apunta a la misma propiedad:ASP.NET MVC Html.TextBoxFor presentó un valor diferente de <%: Model.value%>

<%: Model.myProperty %> 

que devuelve "25", que es lo que he establecido la propiedad de ser. Pero cuando se procesó como un cuadro de texto, ¡devolvió "0" como el valor de mi cuadro de texto!

<%: Html.TextBoxFor(f => f.myProperty) %> 

¿Alguna idea de por qué? La propiedad es de tipo decimal. Gracias.

+0

¿Dónde y en qué punto establece el valor en 25? –

+0

Ese código no se compilará. ¿Error de tipografía? Debería ser '<% = Html.TextBoxFor (f => f.myProperty)%>'. – GenericTypeTea

+0

Tengo un poco de lógica antes de eso para determinar el valor de myProperty, luego algo como esto: var model = new MyViewModel {myProperty = 25}; Cuando ejecuto la depuración, muestra claramente myProperty = 25, y se refleja al representarlo como texto, pero para el cuadro de texto, de alguna manera no lo hizo. Gracias. – Saxman

Respuesta

0

Me parece mal, el problema está en el HTML, donde tengo la vista representada desde múltiples vistas parciales, y parte del ID de la entrada es el mismo (oculto la vista de edición y renderice la vista principal usando jQuery), de alguna manera este cuadro de texto recoge el valor de la vista que estaba oculta. :)

Gracias por mirar.

15

Pruebe ModelState.Clear() antes de llamar a View o PartialView y pase en el modelo.

Este problema me estaba sucediendo después de hacer una publicación. Es porque los ayudantes de HTML obtienen su valor de ModelState primero antes de verificar el modelo real. Parece que esto debería revertirse IMO.

+0

Acepto, no es un comportamiento deseable en muchos escenarios. Aquí hay otra pregunta relevante: http://stackoverflow.com/questions/1775170/asp-net-mvc-modelstate-clear. –

0

Al tener el mismo problema, leí esta publicación hoy (y ha resuelto mi problema) y decidí investigar más sobre ella. Entonces, esto es lo que encontré:

"ASP.NET MVC asume que si está renderizando una Vista en respuesta a un HTTP POST, y está usando Html Helpers, entonces es más probable que vuelva a mostrar un formulario que ha fallado la validación Por lo tanto, el código HTML Ayudantes de hecho el check in ModelState por el valor que se mostrará en un campo antes de que se ven en el modelo.”Por: Simon J Ince

Si desea leer más sobre esto, acceder al enlace de abajo: http://blogs.msdn.com/b/simonince/archive/2010/05/05/asp-net-mvc-s-html-helpers-render-the-wrong-value.aspx

Nos vemos.

Cuestiones relacionadas