您可以使用 QueryString、ViewState(ASP.NET 的内置隐藏字段)或将其设置为 cookie 值。
我对你的场景了解不够。我能提供的最好的例子是我如何处理(我猜的)与你的情况相似的例子。
为您的所有页面类创建一个基类以继承(更多在这里oldy but goody http://www.4guysfromrolla.com/articles/041305-1.aspx),将您的 SchoolId 属性添加到它。这是在 c# 中,我很抱歉,不幸的是 VB.NET 语法确实让我牙疼。翻译起来应该不会太难,因为这是非常基本的东西。
使用 QuertString,您需要测试 -1 并在这种情况下重定向。
public class BasePage : System.Web.UI.Page
{
public int SchoolId
{
get
{
if (Request.QueryString["schoolId"] != null)
{
return Convert.ToInt32(Request.QueryString["schoolId"]);
}
else
{
return -1;
}
}
}
}
使用 ViewState
public class BasePage : System.Web.UI.Page
{
public int SchoolId
{
get
{
if (ViewState["schoolId"] != null)
{
return (int)ViewState["schoolId"];
}
else
{
int schoolId = someDataLayer.SelectUsersSchoolId(User.Identity.Name);
ViewState["schoolId"] = schoolId;
return schoolId;
}
}
}
}
使用 cookie(更多信息)http://msdn.microsoft.com/en-us/library/aa289495 (v=vs.71).aspx
public class BasePage : System.Web.UI.Page
{
public int SchoolId
{
get
{
if (Request.Cookies["schoolId"] != null)
{
return (int)Request.Cookies["schoolId"].Value;
}
else
{
int schoolId = someDataLayer.SelectUsersSchoolId(User.Identity.Name);
Request.Cookies["schoolId"].Value = schoolId;
Request.Cookies["schoolId"].Expires = DateTime.Now.AddDays(1);
return schoolId;
}
}
}
}