从viewstate读取数据时出现延迟

时间:2013-12-04 08:42:10

标签: asp.net viewstate

所以我想在viewstate中保存一个变量,并在按下按钮后立即使用。 问题是你必须在写东西之前按两下按钮。 这段代码就是问题所在,因为我认为这是基础知识。

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
    <body>
        <form id="form1" runat="server">
            <asp:Button ID="Button1" runat="server" Text="Button 1" OnClick="Button1_Click" />
            <asp:Button ID="Button2" runat="server" OnClick="Button2_Click" Text="Button 2" />
        </form>
    </body>
</html>

在后面的代码中 使用System;

public partial class _Default:System.Web.UI.Page {

    protected void Page_Load(object sender, EventArgs e) {
        Response.Write(ViewState["Button"]);
    }

    protected void Button1_Click(object sender, EventArgs e) {
        ViewState["Button"] = "Button 1";
    }

    protected void Button2_Click(object sender, EventArgs e) {
        ViewState["Button"] = "Button 2";
   }
}

1 个答案:

答案 0 :(得分:0)

您的页面加载事件发生在按钮单击事件之前,因此在第一页加载时,您的查看状态为空白。

在第一个按钮上单击它仍然是空白的,因为首先调用页面加载,然后单击按钮。

现在第二次按钮点击查看状态有值,因此它将显示在您的页面上

在这里,你必须使用页面Pre Render事件来显示视图状态值,如下面的

protected override void OnPreRender(EventArgs e)
        {
            base.OnPreRender(e);

            Response.Write(ViewState["Button"]);
        }

将它放在您的页面类中,它将在单击按钮

中工作