gpt4 book ai didi

asp.net - 什么时候应该在服务器控件上启用 EnableViewState?

转载 作者:行者123 更新时间:2023-12-03 10:28:52 27 4
gpt4 key购买 nike

是否有任何指导方针或规则查看状态 应该在服务器控件上启用吗?什么时候应该不是 ?

我在看这个 SqlDatasource example并注意到标签控件的 View 状态未启用:

<asp:Label ID="ErrorMessageLabel" EnableViewState="false" runat="server" />

为什么不是 EnableViewState在标签控件上启用?我知道启用 View 状态会带来一些开销,所以我只想在需要时使用它。

最佳答案

这是一个很好的经验法则:如果您 (1) 在代码隐藏中更改属性的值,并且 (2) 需要知道您在稍后的回发中设置的值而不重新计算该值,那么您需要使用 ViewState。

例如。在我的页面标记中,我可能有一个像这样指定的 Label 控件:

<asp:Label ID="TitleLabel" runat="server" Text="Update this Employee" />

然后在 Page_Load 事件中我有这个代码:
If Not IsPostBack AndAlso myEmployeeObject.IsNew Then TitleLabel.Text = "Create a new Employee"

通过更改 Text 属性的值,我在 ViewState 中引入了一个新元素。如果我在任何后续 PostBack 期间获取 Label 的 Text 属性的值,则该值将是“创建新员工”。

下面是我在着手尽量减少页面使用的 ViewState 数量时所做的事情。我 enable tracing在页面上。当它在浏览器中呈现时,跟踪输出会添加到页面的底部。跟踪输出标识页面上的每个服务器控件,并包括每个控件存储的 ViewState(我相信以字节为单位)的数量。我使用此信息来计算何时我想用 ViewState 的开销来换取重新计算值的开销。

在我之前的示例中,我会选择在每个 PostBack 上重新计算 Label 的 Text 属性,并停止在 ViewState 中存储 Text 属性。这是我更新后的标记的外观:
<asp:Label ID="TitleLabel" runat="server" Text="Update this Employee" EnableViewState="false" />

还有我更新的 Page_Load 事件:
If myEmployeeObject.IsNew Then TitleLabel.Text = "Create a new Employee"

关于asp.net - 什么时候应该在服务器控件上启用 EnableViewState?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/448719/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com