将布尔值转换为会话变量
Posted
技术标签:
【中文标题】将布尔值转换为会话变量【英文标题】:Turning a boolean into session variable 【发布时间】:2013-11-22 10:12:33 【问题描述】:关于如何将代码中的“可食用”转换为会话以在不同页面上显示为标签的任何想法。 帮助将不胜感激。
标签会显示类似可以吃的信息
代码如下
public int totalCalories()
return grams * calsPerGram;
public string getFruitInfo()
string s;
if (edible == true)
s = fName + " is good and it has " + totalCalories() +
"calories";
else
s = "Hands off! Not edible";
//edible = Sesion ["ediblesesion"] as bool;
// Session ["ediblesession"] = edible;
return s;
【问题讨论】:
你已经知道答案了。只需使用您的注释代码 另外,如果你只是想将数据传递到另一个页面,你可以使用 POST 和 GET。 干杯,伙计们工作不正常,所以我评论了它,但会继续努力。 您不能使用“as bool”,因为 Boolean 不能为空。这就是你可能遇到的问题 谢谢 Haedrian,我需要如何解决这个问题? 【参考方案1】:if
语句内的注释中已经有了设置会话变量的代码:
Session["ediblesession"] = edible;
但是,您可能希望在if
语句外部设置会话变量,这样即使布尔值为true
,它也能获得一个值。
当你想在另一个页面中读回该值时,你会得到一个装在一个对象中的布尔值,所以你需要将它转换回一个布尔值:
edible = (bool)Session["ediblesession"];
注意拼写。如果您尝试读取名称为 "ediblesesion"
的会话变量(如您评论中的代码中所示),您将无法获得存储为 "ediblesession"
的变量,并且编译器无法告诉您您做了一个错字,因为它不是标识符。
如果您想读取该值,但可能在没有先设置该值的情况下进入该页面,则需要检查它是否存在:
object value = Session["ediblesession"];
if (value != null)
edible = (bool)value;
else
edible = false; // or whatever you want to do if there is no value
【讨论】:
好的,谢谢 Guffa,我会努力让它工作并让你知道。 您不能对值类型使用as
运算符,例如bool
;因此这条线edible = Session["ediblesession"] as bool;
是不允许的。如果 bool
可以为空,那就另当别论了。
@KarlAnderson:你说的太对了。感谢您的指正。我删除了那个例子,只留下我已经添加的演员表。 :)
您可以使用较新的版本:bool edible= Session["ediblesession"] as bool? ?? false;
【参考方案2】:
设置:
this.Session["Edible"] = myBoolean;
获取:
myBoolean = (bool) this.Session["Edible"];
【讨论】:
我需要在同一页面上执行此操作吗? 没有。只要不超时,会话就会持续(您可以在配置文件中设置 - 以小时为单位)。如果您只想将 Viewstate 用于同一页面,则可以以类似的方法使用它。 设置在一页中。从对方那里读取(获取)它。 @Haedrian:会话超时以分钟为单位,而不是小时。<sessionState timeout="20" />
表示 20 分钟,而不是 20 小时。参考:msdn.microsoft.com/en-us/library/h6bb9cz9%28vs.80%29.aspx
对不起 - 我的意思是它通常以小时为单位。不是可能过期的东西(因为你会把用户踢出去)【参考方案3】:
bool? edible;
object object_edible = Session["session_edible"];
if (object_edible != null)
edible = object_edible as bool?;
else
edible = false;
'bool'是c#中不可为空的值类型,bool?是可以为空的类型
【讨论】:
以上是关于将布尔值转换为会话变量的主要内容,如果未能解决你的问题,请参考以下文章