我在我的App_Code文件夹(.NET项目)下有一个独立的类,名为“StateBag.cs”在会话状态下存储复杂对象
using System; using 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'接受一个fi可以找到类型'System.Web.UI.StateBag'的第一个参数(您是否缺少使用指令或程序集引用?)
我是否必须在Default.aspx.cs页面上引用某些内容,我错过了?
我怎样才能访问它...说我在不同的页面上,“About.aspx.cs”。
我希望能够说: - memberinfo = StateBag["MemberID"]
谁能帮助我理解?
尼特:视图状态是*不*会话状态,并为[几乎总是]绑定到一个*特定的*页面(或者说,它存在于生成的HTML中,并在重构服务器端时)。为了在不同的页面上保持状态*,你可能对会话状态感兴趣(因为会话被使用,为什么这个标记的ViewState?),Cookies或者将状态编码到Page URI中。 – user2864740
优秀!请示例代码? – Philo
我试过这个,但我的价值没有被保存: - //HttpContext.Current.Session[“memID”] = memID; // string memberinfo = string.Empty; // memberinfo = HttpContext.Current.Session [“memID”]。ToString(); – Philo