gpt4 book ai didi

c# - 页面计数器不工作 ASP.NET C#

转载 作者:太空宇宙 更新时间:2023-11-03 21:50:44 25 4
gpt4 key购买 nike

各位。我一直在努力完全按照教科书中的内容进行操作,但无济于事。现在,我的问题是我目前正在尝试制作一个页面计数器来跟踪每个页面被访问的次数,然后在新页面上显示每个值。

这是所有页面都相同的 C# 计数器代码:

int sessionCount = 0;

protected void Page_Load(object sender, EventArgs e)
{
if (Session["CountMain"] == null)
sessionCount = 0;
else
sessionCount = Convert.ToInt32(Session["CountMain"]);
sessionCount++;
}
protected void Page_PreRender(object sender, EventArgs e)
{
Session["CountMain"] = sessionCount;
}

prerender是我在网上查了下自己加的,在课本上也加的。运气不好。

这是计数器页面 C# 代码:

public partial class Counter : System.Web.UI.Page
{
int sessionCount = 0;

protected void Page_Load(object sender, EventArgs e)
{
string sessionMain = Session["CountMain"].ToString();
string sessionComment = Session["CountComment"].ToString();
string sessionCompleted = Session["CountCompleted"].ToString();
string sessionCurrent = Session["CountCurrent"].ToString();
string sessionAbout = Session["CountAbout"].ToString();
string sessionContact = Session["CountContact"].ToString();
string sessionCounter = Session["CountCounter"].ToString();

if (Session["CountCounter"] == null)
sessionCount = 0;
else
sessionCount = Convert.ToInt32(Session["CountCounter"]);
sessionCount++;

lblAboutCount.Text = sessionAbout;
lblCommentCount.Text = sessionComment;
lblCompletedCount.Text = sessionCompleted;
lblContactCount.Text = sessionContact;
lblCounterCount.Text = sessionCounter;
lblCurrentCount.Text = sessionCurrent;
lblMainCount.Text = sessionMain;
}

当我尝试运行它时,我收到“NullReferenceException 未被用户代码处理,对象引用未设置为对象的实例。”错误。

提前致谢。

编辑#1

好的,多亏了 Hexxangonal,计数器现在可以工作了。但是,我的计数器页面现在正在自己计数 2 次。 (每次加载时递增 2)

public partial class Counter : System.Web.UI.Page
{
int sessionCount = 0;

protected void Page_Load(object sender, EventArgs e)
{
if (Session["CountCounter"] == null)
{
sessionCount = 0;
Session["CountCounter"] = sessionCount;
}
else
{
sessionCount = Convert.ToInt32(Session["CountCounter"]);
sessionCount++;
Session["CountCounter"] = sessionCount;
}

Session["CountCounter"] = sessionCount;

lblAboutCount.Text = Convert.ToString(Session["CountAbout"]);
lblCommentCount.Text = Convert.ToString(Session["CountComment"]);
lblCompletedCount.Text = Convert.ToString(Session["CountCompleted"]);
lblContactCount.Text = Convert.ToString(Session["CountContact"]);
lblCounterCount.Text = Convert.ToString(Session["CountCounter"]);
lblCurrentCount.Text = Convert.ToString(Session["CountCurrent"]);
lblMainCount.Text = Convert.ToString(Session["CountMain"]);
}

最佳答案

NullReference 异常可能来自您的 Session["CountXXXXX"].ToString() 行之一(CountXXXXX 是您的计数对象之一,例如 CountMain)因为Session["CountXXXXX"] 不存在(为空)。

您实际上可以将该页面简化为以下逻辑,您将绕过这个问题,因为 null 将被分配给字符串变量。

public partial class Counter : System.Web.UI.Page
{
int sessionCount = 0;

protected void Page_Load(object sender, EventArgs e)
{
if (Session["CountCounter"] == null)
sessionCount = 0;
else
sessionCount = Convert.ToInt32(Session["CountCounter"]);
sessionCount++;

// **NEW** Save the new count value
Session["CountCounter"] = sessionCount;

lblAboutCount.Text = Session["CountAbout"];
lblCommentCount.Text = Session["CountComment"];
lblCompletedCount.Text = Session["CountCompleted"];
lblContactCount.Text = Session["CountContact"];
lblCounterCount.Text = sessionCounter;
lblCurrentCount.Text = Session["CountCurrent"];
lblMainCount.Text = Session["CountMain"];
}

还有一个问题是,您将整数和字符串与 sessionCount 变量、成员变量和局部变量(分别)混合在一起。我已经把它清理干净了。

关于c# - 页面计数器不工作 ASP.NET C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14680337/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com