使用C#,asp.net在2010年VWDstring.IsNullOrEmpty()方法不處理會話變量正確
我在的Site.Master(用於測試目的)手動分配一個會話變量。我設定爲值:會話[「參數userid」] =(int)的數目
在我的網頁,我有以下代碼:
litmsg.Text = "userid = " + Session["userid"].ToString();
if (string.IsNullOrEmpty(Session["userid"] as string))
{
Session["errmsg"] = "No user ID is specified";
litmsg.Text = litmsg.Text + " inside loop";
// Response.Redirect("/PageError.aspx");
}
return;
在執行期間,在litmsg.Text的值是正確的用戶ID,它告訴我Session [「userid」]必須有一個值。但是,如果它有一個值,那麼string.IsNullOrEmpty()應該返回false,這意味着不應該執行正文,並且我不應該看到「inside loop」這個短語。
的string.IsNullOrEmpty()也似乎在我的PageError頁失敗:
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
string strErrMess = string.IsNullOrEmpty(Session["errmess"] as string) ?
"Unspecificed error message" :
Session["errmess"].ToString();
errmess.Text = strErrMess;
}
}
在這種情況下,報告未指定的消息,甚至當我已經爲會話的值[「errmess」] 。
事情是我在其他情況下使用這個成語,它似乎工作 - 它只有當我將它應用到會話變量我有一個問題。有什麼我失蹤
我發現在引用會話變量時使用的PREVIOUS版本的錯誤,但這些引用表明該錯誤已在當前版本中修復。例如,這裏:C# String.IsNullOrEmpty: good or bad?
我喜歡這個成語,因爲我已經在其他地方使用它了。有沒有更好的方法來做到這一點?一個工程?或者也許我做錯了什麼。
在檢查它是否爲字符串之前,您沒有調用'ToString()'。你給它賦予一個int值,當然這不是一個字符串。 –
我認爲如果值爲null,它可能會失敗ToString()。 – elbillaf