更改除页面中的一个按钮之外的所有点击的会话变量

时间:2015-06-05 15:08:42

标签: asp.net session postback

我在aspx页面中有10个按钮/链接。我只需要在一个按钮点击上维护一个会话变量,对于所有其他9点击/动作我需要更改会话变量中的值。

如何以最佳方式获取此信息,而不是写入这9个点击操作。 请建议

3 个答案:

答案 0 :(得分:1)

您可以为多个按钮重复使用相同的事件,并检查“发件人”以查看点击了哪个按钮。

标记:

 <asp:Button ID="Button1" runat="server" OnClick="GenericButtonClick" Text="Button" />
 <asp:Button ID="Button2" runat="server" OnClick="GenericButtonClick" Text="Button" />

CS:

protected void GenericButtonClick(object sender, EventArgs e)
{
            Button button = sender as Button;

            switch(button.ID)
            {
                case "Button1":

                    //Maintain Session Variable

                    break;

                default:

                    //Change Value in Session Variable

                    break;
            }
}

然后将所有按钮设置为使用相同的事件处理程序

答案 1 :(得分:1)

我主要使用命令事件处理程序而不是单击,所以在aspx方面,你会有这样的东西:

<asp:Button ID="Button1" runat="server" OnCommand="DoSomething" CommandName="SetSession" CommandArgument="true" />
<asp:Button ID="Button2" runat="server" OnCommand="DoSomething" CommandName="SetSession" CommandArgument="false" />
<asp:Button ID="Button3" runat="server" OnCommand="DoSomething" CommandName="SetSession" CommandArgument="false" />

在后端cs文件中,只有一个这样的事件处理程序:

protected void DoSomething(object sender, CommandEventArgs e)
{
    if (e.CommandArgument.ToString() == "true")
    {
        // set session    
    }

}

使用CommandEventHandler的好处是,即使稍后您将按钮更改为ImageButton或LinkBut​​ton,您也无需更改事件签名,它适用于所有人。

答案 2 :(得分:0)

您可以设置property,您可以在其中设置session value,也可以从此属性中获取价值。我已将其设为private,因为它仅用于您需要的页面。

private static string SetGetSession
{
    set { HttpContext.Current.Session["Mairaj"] = value; }
    get { return HttpContext.Current.Session["Mairaj"].ToString(); }
} 

以下是如何使用它

protected void btnOne_Click(object sender, EventArgs e)
{
    SetGetSession = "Mairaj";
}
protected void btnTwo_Click(object sender, EventArgs e)
{
    SetGetSession = "Ahmad";
}
protected void btnTh_Click(object sender, EventArgs e)
{
    SetGetSession = "Minhas";
}

如果您希望在其他网页中使用它,您可以制作class并创建此属性public,您就可以随处访问它。