加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

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

发布时间:2020-12-16 09:15:39 所属栏目:asp.Net 来源:网络整理
导读:我觉得我在这里缺少一些关键. 我已经尝试过关注http://msdn.microsoft.com/en-us/magazine/cc300437.aspx的指南 在谷歌,但我看不到我没有做的. 我有一些非常基本的代码,我写的只是试图让它工作: Default.aspx代码: %@ Page Language="C#" AutoEventWireup=
我觉得我在这里缺少一些关键.

我已经尝试过关注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"] + ";";
        }
    }
}

我已经尝试使用会话对象和缓存对象来增加值,但无济于事.我每次都得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中包装的徽标,每当有人点击徽标时会重置会话,即使他们实际上没有离开页面.如果他们在浏览器上刷新而没有重新发布最后一篇文章也会发生.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读