1

セッションの有効期限が切れた場合、ユーザーをカスタムページにリダイレクトしたいと思います。

On PageLoad
If Session("OrgID") = Nothing Then
    Response.Redirect("SchoolLogin.aspx?schoolID="+[schoolid])
End If

schoolIDはすべてのページの非表示フィールドに保存できますが、これはあまりエレガントではないようです。すべてのページにあるユーザーコントロールの非表示フィールドを使用してみようと思いましたが、ユーザーコントロールのPageLoadはメインのPageLoadの後に起動するため、セッションの有効期限を確認する前にエラーが発生します。これに対する一般的な解決策はありますか?

4

1 に答える 1

0

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;
            }
        }
    }
}
于 2012-09-03T21:06:21.300 に答える