我已经读过,在asp.net MVC应用程序中没有viewstate。 我正在进行模型验证。现在,如果我的页面上有两个文本框,我正在为模型中的两个文本框进行必要的文件验证。单击一个按钮即可在服务器端完成此验证。我将填写一个文本框并单击“提交”按钮。它执行验证并返回结果,说明需要第二个字段。此时保留第一个文本框的值。那么你能告诉我即使在回发后该文本框如何保留该值?
答案 0 :(得分:9)
没有“回发”。只有一个帖子。
Controller.ModelState
集合中。 ModelState
条目都会设置Errors
属性。当您致电Html.TextBox("someName", someValue)
时,文本框将包含someValue
,除非 ModelState
为"someName"
的关键字,其中case使用来自ModelState
的值。这是最初显示默认数据(如果有)的方式,但是在错误之后显示用户的数据。
答案 1 :(得分:2)
了解ModelState。当您发布http表单时,值将存储在ModelState对象中,并在使用html帮助程序(Html.Label,Html.Hidden,Html.TextBox)再次生成表单时重用。
答案 2 :(得分:1)
使用Model渲染视图。如果将相同的模型(带有ModelState错误)传递给视图,则验证失败时,它将使用使用ModelState错误呈现的额外验证消息重新填充相同的视图。
答案 3 :(得分:0)
文本框的值绑定到Model值。
验证失败后,页面将重新显示,其状态为提交时的状态(即第一个文本框的值)和任何ModelState错误。
没有观众进场; - )
善,
丹
答案 4 :(得分:-1)
如果要回发到同一页面,启用视图状态实际上应该保留控件的值