viewstate处理的功能如何在mvc中处理

时间:2012-01-18 17:40:02

标签: asp.net asp.net-mvc asp.net-mvc-3

我发现MVC中没有视图状态。

关于视图状态,我有两个问题。

第一个问题:

在经典网页表单中,Viewstate用于在往返期间保持控制状态。即使我不明白这一点。我在某处阅读,如果我在页面中禁用viewstate,所有表单控件将在回发后被清除。我认为这不是需要视图状态的正当理由。 ASP.net引擎可以在没有viewstate的情况下处理这种情况(mainatianing状态)。

和我的第二个问题:MVC的哪个部分正在处理视图状态责任。

此致 Ramana Akula。

2 个答案:

答案 0 :(得分:3)

不需要ViewState,因为没有服务器端控件(至少不应该)。

这很简单。

服务器端控件使用ViewState跟踪(在某些情况下所有)在页面回发时需要还原的属性值。同样,它是可以触发服务器端事件(例如TextChanged)的机制 - 服务器重新保存asp:TextBox的{​​{1}}值,就像ViewState保存到的那样页面,并将其与POST回来的值进行比较 - 如果它不同,则触发该事件。例如。

事实上,ViewState是一个非常聪明的解决方案......但我不得不说我讨厌它。

在MVC中,当呈现文本框(或者,我应该说是HTML输入Text)然后提交回来时,它的值将从请求重新绑定。然后,在服务器上,您将重新构建再次构成视图所需的数据。

我现在已经写了很多MVC网站 - 我甚至都没有需要打开会话状态。

如果你来自Asp.Net Forms,它起初可能完全令人难以置信(这实际上取决于你对HTML的普遍使用程度),但最终还是令人难以置信的解放;并且显然会对性能产生巨大影响。

答案 1 :(得分:0)

明白了。我的观念是错误的。

视图状态用于使用有效数据重新构造服务器端控件属性。相关功能由MVC中的模型绑定处理。