我的App_Code文件夹(.NET项目)下有一个名为“StateBag.cs”的单独的类
使用System; 使用System.Text;
[Serializable()]
public class MyStateBag
{
public MyStateBag(){}
private string _MemberID = string.Empty;
public string MemberID
{
get { return _MemberID; }
set { _MemberID = value; }
}
}
现在我希望能够从我的Web项目的任何页面更新MemberID值。
例如: -
Default.aspx.cs: -
public partial class _Default : System.Web.UI.Page
{
public StateBag MyStateBag
{
get { return (StateBag)Session["MyStateBag"]; }
set { Session["MyStateBag"] = value; }
}
protected void Page_Init(object sender, EventArgs e)
{
this.MyStateBag = (StateBag)Session["MyStateBag"];
}
.... }
在我的Default.aspx.cs页面上我试图将memberID的值设置为MyStateBag: -
if (HttpContext.Current.Session["MyStateBag"] == null)
{
HttpContext.Current.Session["MyStateBag"] = new StateBag();
}
((StateBag)HttpContext.Current.Session["MyStateBag"]).MemberID = memID;
然而我遇到了冲突: - 'System.Web.UI.StateBag'不包含'MemberID'的定义,也没有扩展方法'MemberID'接受类型为'System.Web.UI.StateBag'的第一个参数'(你丢失了吗?) using指令或程序集引用?)
我是否必须在我错过的Default.aspx.cs页面上引用某些内容?
如何才能访问它...说我在另一页,“About.aspx.cs”。
我希望能够说: - memberinfo = StateBag["MemberID"]
任何人都可以帮我理解这个吗?
答案 0 :(得分:3)
您保存到Session对象的任何内容都将留在该用户访问您的网站时。所以在Default.aspx.cs上你可能有类似的东西:
//Make sure there is an object saved for this user
if(Session["StateBag"] == null)
Session["StateBag"] = new StateBag();
//Set what you need
((StateBag)Session["StateBag"]).MemberID = 1234;
然后在另一个页面上,你可以用同样的方式访问它
//Make sure there is an object saved for this user
if(Session["StateBag"] == null)
Session["StateBag"] = new StateBag();
//Get what you need
int memberID = ((StateBag)Session["StateBag"]).MemberID