我正在尝试使用session来存储值(id)。问题是我必须将其存储为字符串。当尝试使用id的实例时,我得到错误:
Exception Details: System.InvalidCastException: Specified cast is not valid.
Source Error:
Line 156:
Line 157: Nemanet_Navigation newFile = new Nemanet_Navigation();
Line 158: newFile.Nav_pID = (Guid)Session["id"];
Line 159:
Line 160:
这是我获得id的地方,似乎工作正常。 Session [“id”]获取值。
public void treeview_Navigation_SelectedNodeChanged(object sender, EventArgs e)
{
TreeNode node = treeview_Navigation.FindNode(treeview_Navigation.SelectedNode.ValuePath);
NavTreeNode nNode = node as NavTreeNode;
Session["id"]=((TreeView)sender).SelectedValue.ToString();
}
但是这段代码似乎不起作用。我得到了上面提到的错误。
protected void Button1_Click(object sender, EventArgs e)
{
Nemanet_Navigation newFile = new Nemanet_Navigation();
newFile.Nav_pID = (Guid)Session["id"];
}
答案 0 :(得分:4)
protected void Button1_Click(object sender, EventArgs e)
{
Nemanet_Navigation newFile = new Nemanet_Navigation();
newFile.Nav_pID = Guid.Parse(Session["id"] as string);
}
答案 1 :(得分:3)
尝试使用:
newFile.Nav_pID = new Guid(Session["id"].ToString());
答案 2 :(得分:0)
您将GUID转换为字符串,然后将其保存在会话集合中。但是当你检索它时,你试图将它转换为无效的GUID。字符串和GUID是不兼容的类型。保存并使用GUID构造函数将字符串转换为GUID实例时,将其保存为GUID或将其转换为字符串(就像您正在做的那样)。
你可以这样做:
Session["id"]=((TreeView)sender).SelectedValue.ToString();
然后从会话中检索它:
newFile.Nav_pID = new Guid((string)Session["id"]);
答案 3 :(得分:0)
默认情况下,aspx创建的SessionID不是GUID。您可以创建自己的数据类型会话ID值。例如:
HttpCookie myCookie = new HttpCookie("UserSettings");
myCookie.Expires = DateTime.Now.AddMinutes(1.0);
myCookie.Value = g1.ToString();