我已經閱讀了asp.net MVC應用程序中沒有的viewstate。 我在做模型驗證。現在,如果我的網頁上有兩個文本框,並且我正在爲模型中的兩個人進行所需的驗證。這個驗證是在服務器端單擊一個按鈕完成的。我將填寫一個文本框並單擊提交按鈕。它進行驗證並返回結果,說第二個字段是必需的。此時保留第一個文本框的值。那麼你能告訴我這個文本框在回發後如何保留這個值嗎?在ASP.NET MVC應用程序中的視圖狀態
3
A
回答
0
該文本框的值綁定到模型值。
驗證失敗後,該頁面會在提交的狀態(即第一個文本框的值)和添加的任何ModelState錯誤時與其模型重新顯示。
沒有ViewState的未來在玩;-)
善良,
丹
9
沒有「回傳」。只有一個帖子。
- 服務器返回HTML。
- 瀏覽器呈現它。
- 用戶發佈廢話數據。
- 用戶提交的所有數據都保存在
Controller.ModelState
集合中。 - 如果存在驗證錯誤,則每個
ModelState
條目都有其Errors
屬性集。 - 服務器查看垃圾數據。返回與(1)相同的頁面,除了它包含用戶提交的數據,好或壞以及廢話數據的驗證錯誤。
- 瀏覽器呈現。
你打電話時,說,Html.TextBox("someName", someValue)
則文本框將包含someValue
除非有一個爲"someName"
一個ModelState
關鍵,在這種情況下,從ModelState
值來代替。這是最初顯示默認數據(如果有)的方式,但用戶數據在出現錯誤後顯示。
2
閱讀關於ModelState。發佈http表單時,值存儲在ModelState對象中,並在使用html助手(Html.Label,Html.Hidden,Html.TextBox)再次生成表單時重用。
- 表單使用Html.TextBox()顯示。
- 用戶首次輸入值。
- 表格已過帳。
- ModelState對象保存文本框值。
- 窗體再次使用Html.TextBox()第二次顯示。方法查看ModelState並在第一次發佈時再次設置它的值。即使您提供了新的值,它也會在ModelState對象中進行搜索。
-1
使視圖狀態實際上應該如果你回發到
同一頁面保留控件的值+0
MVC背後的想法是分離問題,不要將業務邏輯與視圖或UI混合在一起,並使用測試方法輕鬆測試網站http://forums.asp.net/t/1215012。 ASPX – 2011-06-21 11:03:16
1
視圖使用模型呈現。在失敗的驗證中,如果您將相同的模型(帶有ModelState錯誤)傳遞給視圖,它將使用額外的驗證消息重新填充相同的視圖,這些消息使用ModelState Errors進行渲染。
該值在html中重新發射!?! – 2010-04-09 13:48:09