所以我想在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";
}
}
答案 0 :(得分:0)
您的页面加载事件发生在按钮单击事件之前,因此在第一页加载时,您的查看状态为空白。
在第一个按钮上单击它仍然是空白的,因为首先调用页面加载,然后单击按钮。
现在第二次按钮点击查看状态有值,因此它将显示在您的页面上
在这里,你必须使用页面Pre Render事件来显示视图状态值,如下面的
protected override void OnPreRender(EventArgs e)
{
base.OnPreRender(e);
Response.Write(ViewState["Button"]);
}
将它放在您的页面类中,它将在单击按钮
中工作