2009-05-31 17 views
2

我知道像Html.TextBox()這樣的字段接受兩個值,第一個是名稱,第二個是值。 Html.TextArea()也是如此。但是,如果表單是以AJAX形式提交的,並且表單所在的div將被服務器的視圖替換,則表單字段會堅持採用先前的值。圖像勝過千言萬語:ASP.Net MVC中的表單字段從哪裏獲取它們的值?

image http://img132.imageshack.us/img132/4171/aspnetmvcbug.png

我控制器和模型上檢驗一切,圖像是從調試視圖本身。該模型是空的,但從它生成的字段取前一個提交的值。

回答

3

回發數據保存在ModelState中。內置的HtmlHelper方法將在呈現內容時根據表單元素的名稱查找存儲在模型狀態中的值。

+0

哦!所以模型狀態在不使用AJAX時很乾淨,因爲我重定向了。當方法成功修復時添加ModelState.Clear()。這是要走還是我摧毀了ModelState? – Pablo 2009-05-31 00:58:48

0

你有一個條目ViewData [「Body」]? MVC也將嘗試根據名稱將控件綁定到ViewData項目。

+0

ViewData中沒有主體。謝謝。 – Pablo 2009-05-31 00:53:28

2

檢查View.ModelState屬性。在某些情況下,表單可以從那裏獲取值。

+1

是的,問題出在ModelState中。做一個ModelState.Clean()似乎解決了這個問題,但我不確定是否在這個過程中銷燬了ModelState。 – Pablo 2009-05-31 01:06:01

相關問題