gpt4 book ai didi

c# - 如何在页面 View 或按钮单击之间增加 ASP.NET (C#) 中的变量

转载 作者:行者123 更新时间:2023-11-30 13:27:31 24 4
gpt4 key购买 nike

我觉得我在这里遗漏了一些关键的东西。

我已经尝试按照 http://msdn.microsoft.com/en-us/magazine/cc300437.aspx 上的指南进行操作在谷歌上,但我看不到我没有做过什么。

我有一些非常基本的代码,我只是为了让它工作而编写的:

Default.aspx代码:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" EnableSessionState="True" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>Demo Page</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Label ID="myLabel" runat="server" Text="foo"></asp:Label>
<asp:LinkButton ID="lnkClickButton" runat="server" OnClick="lnkClickButton_Click" CommandName="Clicky">Click Me</asp:LinkButton>
</div>
</form>
</body>
</html>

Default.aspx.cs 代码:

using System;
using System.Collections.Generic;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
Session["clickcount"] = 0;
Cache["clickscount"] = 0;
}
protected void lnkClickButton_Click(object sender, EventArgs e)
{
Session["clickcount"] = (int)Session["clickcount"] + 1;
Cache["clickscount"] = (int)Cache["clickscount"] + 1;

Label myLabel = ((Label)this.FindControl("myLabel"));
if (myLabel != null)
{
myLabel.Text = "Session: " + Session["clickcount"] + "; Cache: " + Cache["clickscount"] + ";";
}
}
}

我试过同时使用 session 对象和缓存对象来增加值,但无济于事。我每次只得到 1。

注意这是我的第一个 asp.net 项目,而且我对 c# 还很陌生。

最佳答案

Page_Load 在每次回传和初始加载时运行。您需要在 Page_Load 中指定无回发:

protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack){
Session["clickcount"] = 0;
Cache["clickscount"] = 0;
}
}

更好的是,指定它只应在它还没有值时设置:

protected void Page_Load(object sender, EventArgs e)
{
if (Session["clickcount"] == null){
Session["clickcount"] = 0;
}
}

澄清一下,最好只设置尚未设置的值的原因是每次有人直接访问页面时 Page.IsPostBack 都是 false。比如说你有你的页面 http://example.com/Demo/Default.aspx在顶部你有一个标志,你用 logo here 包裹起来,每次有人点击 Logo 时, session 都会重置,即使他们实际上并没有离开页面。如果他们在没有重新发布上一篇文章的情况下刷新浏览器,也会发生这种情况。

关于c# - 如何在页面 View 或按钮单击之间增加 ASP.NET (C#) 中的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10782811/

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