关于如何将代码中的“可食用”转换为会话以在不同页面上显示为标签的任何想法。 将非常感谢帮助。
标签会显示“是可以吃”的消息
代码吼叫
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;
}
}
答案 0 :(得分:16)
您已经拥有了在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
}
答案 1 :(得分:4)
环境:
this.Session["Edible"] = myBoolean;
获得:
myBoolean = (bool) this.Session["Edible"];
答案 2 :(得分:0)
bool? edible;
object object_edible = Session["session_edible"];
if (object_edible != null)
edible = object_edible as bool?;
else
edible = false;
'布尔'是c#中的一个不可为空的值类型,bool?是一个可以为空的类型