QueryString、ViewState(ASP.NETの組み込みの非表示フィールド)を使用するか、Cookie値として設定できます。
私はあなたのシナリオについて十分に知りません。私が提供できる最善の方法は、私がどのように対処するか(私が推測していること)があなたの状況に似ている例です。
継承するすべてのページクラスの基本クラスを作成し(ここでは古いが良い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;
}
}
}
}