在 VWD 2010 中使用 C#、asp.net。
我在 site.master 中手动分配了一个会话变量(用于测试目的)。我将值设置为: Session["userid"] = (int) number
在我的网页中,我有以下代码:
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;
}
}
在这种情况下,它会报告一条未指定的消息,即使我已经为 Session["errmess"] 设置了一个值。
问题是我在其他情况下使用这个习语,它似乎工作 - 只有当我将它应用到 Session 变量时我才有问题。有什么我想念的吗
当与会话变量一起使用时,我在函数的先前版本中发现了对错误的引用,但这些引用表明该错误已在当前版本中修复。例如,这里:C# String.IsNullOrEmpty:好还是坏?
我喜欢这个成语,因为我已经在其他地方使用它了。有没有更好的方法来做到这一点?一个有效的?或者也许我做错了什么。