asp 后台如何让两个函数公用一个变量值

 bc.aspx.cs
        namespace g.bcgsbx
    {
    public partial class bc : System.Web.UI.Page
    {
        string a;
        protected void Button1_Click(object sender, EventArgs e)
        {
            a = "aaaaaaaa";}
                protected void Button2_Click(object sender, EventArgs e)
        {
           string k = a;//此处调用a时,a为null}

希望两个按钮事件能公用a的值。按钮1修改a的值后,按钮2可以直接调用。

用静态变量的话,当多用户操作时,多用户都公用a
如果用户1修改了a的值,用户2又修改了a,此时用户1再用时,a已经是用户2的值了

我是需要每个用户各用各啊,用户2无法修改用户1的值。


你声明时给a赋值,没有赋值就是空的。

用字典,key是用户ID,value是a

用Session,这样就是自己操作自己的a值,静态是所有用户都可以操作,类似application了


        protected void Button1_Click(object sender, EventArgs e)
        {
                Session["a"]= "aaaaaaaa";}
                protected void Button2_Click(object sender, EventArgs e)
        {
           string k =Session["a"]==null?null:Session["a"].ToString();//注意判断session是否设置过
                    }

直接操作按钮就行,干嘛用变量

请一个全局变量就行吧,如果是个不变的值

首先你的变量a的取值来源是哪里,我看你是写死的

你说每个用户可以更改a的值,说明来源有两种情况:

1、通过前端传递过来的

单击Button会同时触发这两个事件,但先执行Click,后执行Command,在button控件中加上参数属性 CommandArgument='xxx',把a的值给上
在click响应函数中可以用以下代码获得传递的参数
  protected void Button_Click(object sender, EventArgs e)
    {
        Button Btn = sender as Button;
        string commandArgument = Btn.CommandArgument.ToString();
   }

2、后台根据登陆用户相关信息取过来的
这种直接后台直接取,跟其他用户没有关系

如果是要多个提交都使用该变量的话,建议你在页面上加个Hidden,设置runat=“server”,后台就可以使用这个hidden的值来使用了

后台很简单的

hd.Value="aaa";

两个方法

第一种:把变量a设为static,两个函数就可以公用,但是设太多static很耗资源

第二种:是asp特有的方法,在.aspx里面加一个控件,如下:

后台在.cs文件中就可以直接使用该控件的ID获取值了,如:aValue.Value