C# 超链接上的EnableViewState是什么意思?

C# 超链接上的EnableViewState是什么意思?,c#,asp.net,C#,Asp.net,超链接上的EnableViewState是什么意思 <asp:HyperLink ID="RegisterHyperLink" runat="server" EnableViewState="false">Register</asp:HyperLink> 这是什么意思?如果我把它设置为真,它会做什么呢。谢谢我查了一下,但定义并不简单 这意味着您可以在页面请求期间(即在代码隐藏中)设置NavigateUrl属性,而不是将其作为控件模板声明上的属性,该属性将在后续回发中保持

超链接上的EnableViewState是什么意思

<asp:HyperLink ID="RegisterHyperLink" runat="server" EnableViewState="false">Register</asp:HyperLink>

这是什么意思?如果我把它设置为真,它会做什么呢。谢谢我查了一下,但定义并不简单

这意味着您可以在页面请求期间(即在代码隐藏中)设置NavigateUrl属性,而不是将其作为控件模板声明上的属性,该属性将在后续回发中保持不变。如果禁用EnableViewState属性,分配一个NavigateUrl,那么在以下回发请求中,NavigateUrl属性将为nothing

我相信这也适用于控件的其他属性,如文本、目标和ImageUrl


默认值为true。页面的EnableViewState属性将优先于任何子控件,并将覆盖该属性。

ViewState用于在回发过程中保持控件属性的状态。禁用它意味着在代码隐藏中以编程方式设置的任何属性都不会在页面回发中持久化。但是,如果在.aspx页面中声明所有的值,那么禁用它不会有任何区别

一个简单的例子:

假设您在启用ViewState的情况下进行了此aspx标记:

<form id="form1" runat="server">
<div>
    <asp:HyperLink ID="RegisterHyperLink" runat="server" EnableViewState="true">Register</asp:HyperLink>
    <br /><br />
    <asp:Button ID="ButtonPostBack" runat="server" Text="Post Back" />
</div>
</form>
即使在第一次加载时仅将超链接的前景色设置为红色,但单击执行回发的按钮后,超链接仍将保持红色。这是因为ViewState存储超链接属性的值,并在回发后重新创建它们

如果您尝试完全相同的操作,但在超链接上禁用了ViewState,当您单击“提交”按钮时,超链接将恢复为其原始颜色。这是因为viewstate没有存储您将其设置为红色的事实

实际上,如果出现以下情况,通常可以禁用ViewState:

A您的页面不执行任何回发 B您以声明方式设置所有属性


如果您真的想了解ViewState,我建议您阅读。

很好的链接!!我将与我的同事分享这一点。您忘记了选项C,即通过将代码从If块外部移动来设置每次回发的值。
protected void Page_Load(object sender, EventArgs e)
{
    if (!Page.IsPostBack)
    {
        RegisterHyperLink.ForeColor = System.Drawing.Color.Red;
    }
}