C# 如何在页面上保持值为静态

C# 如何在页面上保持值为静态,c#,asp.net,C#,Asp.net,当用户从考勤页转到另一页时,我想使文本框和标签的值在页面上保持不变。我设置了enableviewstate=“true”,但当我转到另一页时,它仍然不保存数据,它消失了 以下是我的html代码: <tr> <td class="auto-style3">Login Time:</td> <td class="auto-style4"> <asp:Label ID="lblLogin" enableviewsta

当用户从考勤页转到另一页时,我想使文本框和标签的值在页面上保持不变。我设置了
enableviewstate=“true”
,但当我转到另一页时,它仍然不保存数据,它消失了

以下是我的html代码:

<tr>
    <td class="auto-style3">Login Time:</td>
    <td class="auto-style4">
        <asp:Label ID="lblLogin" enableviewstate="true" runat="server"></asp:Label>
    </td>
    <td class="auto-style5">Logout Time:</td>
    <td>
        <asp:Label ID="lblLogout" enableviewstate="true" runat="server"></asp:Label>
    </td>
</tr>
<tr>
    <td class="auto-style3">Remarks:</td>
    <td class="auto-style4">
        <asp:TextBox ID="TextBoxRemarks" runat="server" enableviewstate="true" TextMode="MultiLine"></asp:TextBox>
    </td>
</tr>

Viewstate仅适用于相同的页面回发

从MSDN:

视图状态提供特定ASP.NET页面的状态信息。如果您需要在多个页面上使用信息,或者如果您需要在对网站的访问中保留这些信息,则必须使用另一种方法来维护状态。您可以使用应用程序状态、会话状态或配置文件属性

若您希望在收到该页面的请求时看到相同的数据,则应将数据存储在应用程序状态、会话状态或配置文件属性中


然后您应该手动将此数据绑定到pages元素。

我看到您读取了session对象,但您在哪里设置了它?@PatrickHofman我在登录页面上设置了它……我不清楚它到底出了什么问题。你能解释一下实际发生了什么,复制的步骤是什么吗?哪种形式不保持值?你能为什么做标记吗?@PatrickHofman实际上我已经创建了一个员工考勤系统,我有一个登录页面(我在这里创建会话),当员工登录到主页时,他会在点击“登录(每日考勤)”后在考勤页面上标记他的考勤按钮,如果他迟到了,他会发表一些评论,下次他回来时,我希望登录时间和评论值在该页面上保持不变,但当我在标记出席人数后进入另一页面时,这些值不再可用……似乎您的回答没有帮助,因为OP似乎根本没有使用视图状态。他使用Session对象来存储变量,他提到他使用了enableviewstate=true,但是当他转到第一段的另一页时,数据消失了。我认为op希望,当他从另一个页面查看所述页面时,数据将保留。
TimeSpan logintime = System.DateTime.Now.TimeOfDay;
TimeSpan time = TimeSpan.Parse("09:20:00.000");
protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    { 
        lblAttendance.Text = Session["user"].ToString().Split('^')[1];
        lblDate.Text = DateTime.Now.ToString("dd/MM/yyyy");
    }
}

protected void btnLogin_Click(object sender, EventArgs e)
{
    if (btnLogin.Text == "Login(Daily Attendance)")
    {
        SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["REGDataConnectionString"].ConnectionString);
        con.Open();
        SqlCommand cmd = new SqlCommand("Track_UserLog", con);
        cmd.CommandType = CommandType.StoredProcedure;
        cmd.Parameters.AddWithValue("@EmployeeId", Session["user"].ToString().Split('^')[0]);
        cmd.ExecuteNonQuery();
        con.Close();
        lblLogin.Text = System.DateTime.Now.ToString("hh:mm");
        btnLogin.Text = "Logout(Daily Attendance)";
        if (logintime > time)//&& TextBoxRemarks.Text.ToString() == String.Empty)
        {
            DateTime today = DateTime.Today;
            SqlConnection cn = new SqlConnection(ConfigurationManager.ConnectionStrings["REGDataConnectionString"].ConnectionString);
            cn.Open();
            SqlCommand cd = new SqlCommand("update tblAttendanceDetails set Remarks=@rem where LoginDate=convert(date,GETDATE()) AND EmployeeId=' " + Session["User"].ToString().Split('^')[0] + " '", cn);
            cd.Parameters.AddWithValue("@rem", TextBoxRemarks.Text);
            cd.ExecuteNonQuery();
            cn.Close();
        }
    }
    else if (btnLogin.Text == "Logout(Daily Attendance)")
    {
        SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["REGDataConnectionString"].ConnectionString);
        con.Open();
        SqlCommand cmd = new SqlCommand("Track_logout", con);
        cmd.CommandType = CommandType.StoredProcedure;
        cmd.Parameters.AddWithValue("@EmployeeId", Session["user"].ToString().Split('^')[0]);

        cmd.ExecuteNonQuery();

        lblLogout.Text = System.DateTime.Now.ToString("hh:mm");
        btnLogin.Text = "Login(Daily Attendance)";
    }
}