在ASP.NET MVC应用程序中查看状态

时间:2010-04-09 13:45:30

标签: asp.net asp.net-mvc

我已经读过,在asp.net MVC应用程序中没有viewstate。 我正在进行模型验证。现在,如果我的页面上有两个文本框,我正在为模型中的两个文本框进行必要的文件验证。单击一个按钮即可在服务器端完成此验证。我将填写一个文本框并单击“提交”按钮。它执行验证并返回结果,说明需要第二个字段。此时保留第一个文本框的值。那么你能告诉我即使在回发后该文本框如何保留该值?

5 个答案:

答案 0 :(得分:9)

没有“回发”。只有一个帖子。

  1. 服务器返回HTML。
  2. 浏览器呈现它。
  3. 用户发布垃圾数据。
  4. 用户提交的所有数据都保存在Controller.ModelState集合中。
  5. 如果存在验证错误,则每个ModelState条目都会设置Errors属性。
  6. 服务器查看废话数据。返回与(1)相同的页面,除了,它包含用户提交的数据,好或坏,以及废话数据的验证错误。
  7. 浏览器呈现。
  8. 当您致电Html.TextBox("someName", someValue)时,文本框将包含someValue ,除非 ModelState"someName"的关键字,其中case使用来自ModelState的值。这是最初显示默认数据(如果有)的方式,但是在错误之后显示用户的数据。

答案 1 :(得分:2)

了解ModelState。当您发布http表单时,值将存储在ModelState对象中,并在使用html帮助程序(Html.Label,Html.Hidden,Html.TextBox)再次生成表单时重用。

  1. 使用Html.TextBox()显示表单。
  2. 用户第一次输入值。
  3. 表格已过帐。
  4. ModelState对象保存文本框值。
  5. 表格再次使用Html.TextBox()显示第二次。方法查看ModelState并在第一次发布时再次设置其值。即使您提供了新值,也会在ModelState对象中搜索它。

答案 2 :(得分:1)

使用Model渲染视图。如果将相同的模型(带有ModelState错误)传递给视图,则验证失败时,它将使用使用ModelState错误呈现的额外验证消息重新填充相同的视图。

答案 3 :(得分:0)

文本框的值绑定到Model值。

验证失败后,页面将重新显示,其状态为提交时的状态(即第一个文本框的值)和任何ModelState错误。

没有观众进场; - )

善,

答案 4 :(得分:-1)

如果要回发到同一页面,启用视图状态实际上应该保留控件的值