会话状态值未出现在我的标签中

Session state value doesn't appear in my label

我正在使用 c# asp.net 为我的网页制作点击计数器。我正在尝试使用会话状态来显示来自一个 Web 表单的点击计数器的字符串值,并将其放置在另一个 Web 表单中。它有效,但只有在我来回导航链接以测试增量之后,否则我第一次加载页面时,点击计数器计数不会显示在标签上。关于如何解决这个问题的任何线索,我考虑过使用 cookie。但即使第一次访问者来到我的页面,我的点击计数器仍然无法正确显示。我非常渴望解决这个问题。

这是我尝试使用的会话状态代码。

试图显示标签的表单

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Data.SqlClient;
using System.Web.Configuration;

  namespace VideoWebsite
  {
    public partial class WebForm2 : System.Web.UI.Page
    {
       protected void Page_Load(object sender, EventArgs e)
      {

        if (!Page.IsPostBack)
        {
                string field1 = (string)(Session["field1"]);
                Label1.Text = field1;
        }

       }

    }

我试图从中获取会话状态值的表单

 protected void Page_Load(object sender, EventArgs e)
    {
       SqlConnection conn;
       SqlCommand cmd;

       using (conn)
        {
            //open the connection
            conn.Open();
            //send the query and store the results in a sqldatareader
            SqlDataReader rdr = cmd.ExecuteReader();


            if (rdr.Read())
            {
                //set the text of our label to the current # of hits
                lblHits.Text = "Default Page Hits - " +  
               rdr["Hits"].ToString();
            }

            Session["field1"] = rdr["Hits"].ToString(); 

        }
   }

第一次访问时不会显示,因为那个session变量还不存在。您只是在第二个网络表单中创建它。

您应该将从数据库读取信息的代码移动到会话创建的事件处理程序 global.asax。

抱歉,我无法 post 代码,我正在从 Android 应用程序中输入。

protected void Session_Start(object sender, EventArgs e)

       {

         // Your Hits read code goes here

       }