|
|
1
6
你不必这么做。退房 MVC framework |
|
|
2
6
This series of posts is must reading for understanding ViewState 我禁用它,并在Page_Init中执行大部分工作,而不是加载(由于ControlState,值仍然保持不变)。这个设置对我来说很好。 |
|
|
3
5
ViewState是可选的,但很有用。ViewState是服务器端控件上发生的所有更改。因此,如果您要将文本分配给标签,并且希望该文本保持不变,而无需在每次回发时重新分配,那么您将需要维护该文本。另一个我总是打开ViewState的例子是任何数据绑定。 总是 关闭ViewState是一个消息标签。这样,当我必须向用户打印一条消息(一条应该只出现一次然后消失的消息)时,我只需将文本添加到标签上,然后将其忘记。在下一次回发期间,标签将自动恢复为该控件的ASPX声明中的文本(在本例中为空字符串)。 现在,请注意,这与表单集合无关,表单集合是回发期间发布到IIS的值。表单集合将用户输入的值发送到表单元素(文本框、复选框、下拉列表等)。这些.NET将填充到适当的位置——这会发生 之后 ViewState已被处理。
|
|
|
4
3
在经典的ASP中,我们总是使用一个隐藏字段来完成这项工作。Viewstate只是一种自动为您执行此操作的方法。相信我,学习曲线并没有你想象的那么高。 |
|
|
5
3
关闭ViewState时,某些控件会严重受损,因此请准备好解决这些问题。最简单的方法是懒惰并保持打开状态,但如果不选中,ViewState很容易占HTML大小的30%。 例如,假设您有一个下拉列表,并将其绑定到水果列表。在页面加载的if(!IsPostBack){}块中绑定它。如果关闭ViewState,单击按钮时将丢失项目。它们需要在每次加载页面时进行绑定。您还将丢失所选索引,因此需要从Request.Form[]变量中提取该索引。 |
|
|
6
3
在ASP.NET中很难避免Viewstate,因为即使在项目级别关闭它,一些单独的控件仍然使用Viewstate来保存其信息。 如果您不想处理VIEWSTATE,请考虑使用ASP.NET MVC框架。您可能会更熟悉来自经典ASP的MVC框架。 |
|
|
7
2
|
|
8
2
ViewState在大多数情况下自动工作。这就是ASP.NET如何跟踪其所有控件的当前状态。 如果要存储一些额外数据,也可以手动使用viewstate。这很简单:
唯一需要注意的是,存储在viewstate中的任何对象都必须是可序列化的。 |
|
|
9
2
我可以肯定地建议避免在DataGrids和DropDownList中使用ViewState,因为我最近才开始自己使用它。我这样做并不是为了好玩,我必须修复一个页面,这个页面太大了,导致了其他问题。但事实证明这很容易,结果是如此戏剧性,我非常高兴。当然,对于一个简单的小应用程序或少量数据来说,这是不必要的,但另一方面,保持一致性(总是从已知到已知,这样你就可以不断改进你的过程……)是很好的,为什么还要随身携带额外的行李呢? 这需要您进行一些手动干预。例如,如果关闭下拉列表的viewstate,则需要在每次回发时重新绑定它们,然后从请求对象还原SelectedValue。你需要仔细阅读,但谷歌有很多现成的信息。 |
|
|
10
1
|
|
|
11
1
如果您正在为自己的消费编写代码,您可以将其关闭而不必担心。 假设您将维护由其他人编写的Web表单代码,因此您应该知道配置选项和痛点是什么。我能想到的最好的几个
就实际的学习曲线而言,这可能是对两篇MSDN文章的透彻阅读。 |
|
|
12
1
ViewState是web表单隐喻固有的一个必要的邪恶。我个人认为这种方法过时、臃肿,而且通常不利于网络。最好检查一下上面建议的MVC框架。 我建议您避免使用ViewState作为“缓存”来来回传递数据(我见过一些网站这样做是因为集群设置和没有SQL支持的会话状态)。数据被序列化并添加到页面中,并且必须对每个请求执行往返操作,从而增加页面的总大小,并降低站点的加载速度。 |
|
|
13
0
|
|
|
Deverill · 如何在web应用程序中高效存储信息 12 年前 |
|
SausageBuscuit · 按下后退按钮时触发ASP.NET按钮事件 12 年前 |
|
|
markzzz · 如何在处理WebForm之前调用母版页的父级? 12 年前 |