我在aspx页面中有10个按钮/链接。我只需要在一个按钮点击上维护一个会话变量,对于所有其他9点击/动作我需要更改会话变量中的值。
如何以最佳方式获取此信息,而不是写入这9个点击操作。 请建议
答案 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或LinkButton,您也无需更改事件签名,它适用于所有人。
答案 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
,您就可以随处访问它。