12

关于如何将代码中的“可食用”转换为会话以在不同页面上显示为标签的任何想法。帮助将不胜感激。

标签将显示类似可以吃的信息

代码如下

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;
        }
    }
4

3 回答 3

18

您已经有了在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
}
于 2013-11-10T16:53:39.830 回答
4

环境:

this.Session["Edible"] = myBoolean;

得到:

myBoolean = (bool) this.Session["Edible"];
于 2013-11-10T16:51:05.270 回答
0
bool? edible;
object object_edible = Session["session_edible"];
if (object_edible != null)
    edible = object_edible  as bool?;
else
    edible = false;

'bool' 是 c# 中不可为空的值类型,bool? 是可以为空的类型

于 2014-03-27T15:52:22.490 回答