簡體   English   中英

ASP.Net C#-回發和會話對象

[英]ASP.Net C# - Postback and Session objects

我要檢查Session對象,如果不存在,請將用戶重定向到index.html。

關於下面的兩段代碼,我想知道何時應該在另一段代碼上使用另一段代碼?

我認為我應該一直使用版本1,但不確定。

版本1:

protected void Page_Load(object sender, EventArgs e)
{
    if (!Page.IsPostBack)
    {
        if (Session.Count == 0)
        {
            Response.Redirect("~/index.html");
        }
        else
        {
            //code
        }
    }
}

版本2:

protected void Page_Load(object sender, EventArgs e)
{
    if (Session.Count == 0)
    {
        Response.Redirect("~/index.html");
    }
    else if (!Page.IsPostBack)
    {
        //code
    }
}

編輯:謝謝您的答復。 我認為這兩個條件不應該鏈接在一起,而兩個if語句最合適(在我的情況下)。

基本上,您的會話檢查和回發檢查是兩個不同工作流程的一部分。 因此,將它們鏈接到一個if-else塊中可能只會使將來的代碼讀取器感到困惑。 我建議第三個版本:

protected void Page_Load(object sender, EventArgs e)
{
    if (Session.Count == 0)
    {
        Response.Redirect("~/index.html");
        return;
    }

    if (!Page.IsPostBack)
    {
        //code
    }
}

在這里,兩個檢查是分開的,代碼流似乎更加透明。

這實際上取決於您要實現的目標。 即使Session.Count == 0,版本1也永遠不會重定向回發。如果不知道要完成什么,就無法告訴您要使用哪個版本。

這要看情況。 那里的邏輯略有不同。

版本1僅在不是Postback操作時(即,用戶未提交表單時)才會重定向。

如果用戶提交表單或請求頁面,版本2將重定向。

我會選擇選項3:

protected void Page_Load(object sender, EventArgs e)
{
    if (Session.Count == 0)
    {
        Response.Redirect("~/index.html");
        return; //return here so this logic isn't mixed with the postback logic.
    }

    if (!Page.IsPostBack)
    {
        //code
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM