繁体   English   中英

ASP.Net C#变量不存储在网页上

[英]ASP.Net C# Variables not storing on web page

所以我有代码..

int var1 = 0;

protected void cmdvar1_Click(object sender, EventArgs e)
    {
        var1= var1+ 10;
        lblvar1.Text = var1.ToString();
    }

当点击这个,它很棒..它需要int,加上它,然后显示它..然而它不会显示任何超过10,做了一些游戏并得出结论,这不是因为标签没有更新,它只是简单地没有在变量上添加10到前10。 我究竟做错了什么? 我在做什么? 我是否需要将变量信息存储在cookie或其他内容中?

这是由于ASP.NET的生命周期。 在网页后面存储私有字段与使用WinForms的方式不同。 如果你想在帖子后面保留信息,你需要将它存储在一些持久存储中,即Session / ViewState / Database等。

private int var1 = 0;

protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        // load var1 from cache
        Int32.TryParse((Session["var1"] ?? 0).ToString(), out var1);
    }
}

protected void cmdvar1_Click(object sender, EventArgs e)
{
    var1 += 10;
    Session["var1"] = var1; // cache var1
    lblvar1.Text = var1.ToString();
}

所以我强烈建议寻找一个不同的平台。 也许ASP.NET MVC ......但是你可以使用类似下面的内容来解决你的问题。

private int MyNum
{
   get{ return (int)ViewState["MyNum"] ?? 0; }
   set { ViewState["MyNum"] = value; }
}

然后使用MyNum作为递增的整数。

使用Session主体,HTTP是无状态协议,一旦你回发松散当前变量值,

方案

int var1=0;
protected void cmdvar1_Click(object sender, EventArgs e)
    {

if(Session["var1"]!=null)
var1=int.Parse(Session["var1"].ToString());
else
var1=0;
        var1= var1+ 10;
        lblvar1.Text = var1.ToString();
Session["var1"]=var1;
    }

假设lblvar1是Label控件,那么您可以执行以下操作。 这将起作用的原因是因为.NET自动处理UIControl的状态

protected void cmdvar1_Click(object sender, EventArgs e)
    {
        var var1 = Convert.ToInt32(lblvar1.Text);
        var1= var1+ 10;
        lblvar1.Text = var1.ToString();
    }

正如评论中所建议的那样,在创建有意义的Web应用程序之前,必须将Universe包装在无状态中。

ASP.NET等效于完成类似状态的行为是使用可用于每个网页的Session集合。

protected void cmdvar1_Click(object sender, EventArgs e)
{
   int var1 = (int)Session["yourInteger"];
   var1 += 10;
   Session["yourInteger"] = var1;
   lblvar1.Text = var1.ToString();
}

你显然是在其他地方设置Session [“yourInteger”]的初始值,只是一次。

Session的问题在于它使您的应用程序可能出错并且有些不可扩展。 您使用的越多,两个帐户的情况就越糟糕。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM