[英]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.