2010-09-02 14 views
6

To jest bardzo dziwne i nie wiem dlaczego. Mam ViewModel które zwracają pewną wartość dla mojego obiektu, przy renderowaniu go, mają różne wartości, ale oni wskazuje tym samym miejscu:ASP.NET MVC Html.TextBoxFor ma inną wartość niż <%: Model.value%>

<%: Model.myProperty %> 

która zwraca „25”, co jest, co mam ustawić właściwość do. Ale po wyrenderowaniu go jako pole tekstowe, zwróciło "0" jako wartość dla mojego pola tekstowego!

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

Każdy pomysł, dlaczego? Właściwość jest typu dziesiętnego. Dzięki.

+0

Gdzie i kiedy ustawisz wartość na 25? –

+0

Ten kod nie zostanie skompilowany. Typo? Powinien być '<% = Html.TextBoxFor (f => f.myProperty)%>'. – GenericTypeTea

+0

Mam już wcześniej pewną logikę, aby określić wartość dla myProperty, a następnie coś takiego: var model = new MyViewModel {myProperty = 25}; Po uruchomieniu debugowania, wyraźnie wyświetla się myProperty = 25 i odzwierciedla to przy renderowaniu go jako tekstu, ale w przypadku pola tekstowego, w jakiś sposób tak się nie stało! Dzięki. – Saxman

Odpowiedz

0

Moje złe, wydaje się, że problem jest w HTML, gdzie mam widok renderowany z wielu widoków częściowych, a niektóre ID dla danych wejściowych są takie same (ukrywam widok edycji i renderowany widok główny za pomocą jQuery), w jakiś sposób ten textbox podnosi wartość z ukrytego widoku !!! :)

Dzięki wszystkim za szukanie.

15

Wypróbuj ModelState.Clear() przed wywołaniem View lub PartialView i przekazaniem w modelu.

Ten problem miał miejsce po opublikowaniu wpisu. Jest tak dlatego, że pomocnicy HTML uzyskują wartość z ModelState przed sprawdzeniem rzeczywistego modelu. Wydaje się, że to powinno być odwrócone IMO.

+0

Zgadzam się, nie jest to pożądane zachowanie w wielu scenariuszach. Oto kolejne istotne pytanie: http://stackoverflow.com/questions/1775170/asp-net-mvc-modelstate-clear. –

0

Mam ten sam problem, przeczytałem ten wpis dzisiaj (i rozwiązał on mój problem) i postanowiłem zbadać więcej informacji na jego temat. Oto, co znalazłem:

"ASP.NET MVC zakłada, że ​​jeśli renderujesz widok w odpowiedzi na POST HTTP i używasz Pomocników Html, najprawdopodobniej będziesz wyświetlać ponownie formularz który nie przeszedł weryfikacji. Dlatego HTML pomocnicy rzeczywiście sprawdzić w ModelState dla wartości wyświetlanych w polu przed wyglądają w modelu „Przez:. Simon J Ince

Jeśli chcesz dowiedzieć się więcej na ten temat, przejdź do linku poniżej: http://blogs.msdn.com/b/simonince/archive/2010/05/05/asp-net-mvc-s-html-helpers-render-the-wrong-value.aspx

Do zobaczenia.

Powiązane problemy