无法将cartID跟踪为session和int

时间:2011-09-06 13:23:51

标签: asp.net-mvc asp.net-mvc-3 oop shopping-cart

我正在定制MVC音乐商店以满足我在MVC3中的需求。我正在挂断的是他们将CartID跟踪为用户用户名的字符串,我想通过userID跟踪它,而不是因为我们没有用户名。无论如何,我遇到了这个功能的问题:

 public int GetCartId(HttpContextBase context)
 {
        if (context.Session[CartSessionKey] == null)
        {
            if (context.Session["UserID"] != null)
            {
                context.Session[CartSessionKey] = context.Session["UserID"];
            }
            else
            {
                //Generate a new random GUID using System.Guid class
                Guid tempCartId = Guid.NewGuid();
                //Send tempCartId back to client as a cookie
                context.Session[CartSessionKey] = tempCartId;
            }
        }

 return context.Session[CartSessionKey];

 }

我收到

的错误
  

“错误20无法将类型'对象'隐式转换为'int'。存在显式转换(您是否错过了转换?)”

我理解context.Session[CartSessionKey]是一个对象,而不是一个int,但我不知道最好的方法:

A)将所有这些内容转换为使用Ints而不是GUID和会话,或

B)如果这是一个不好的方法,如果用户没有登录,如何改进我的代码以更适当地为cartID分配随机int。

谢谢!

1 个答案:

答案 0 :(得分:2)

如果要将int存储到Session对象而不是GUID中,则需要将对象强制转换为int。

int x =(int)context.Session [CartSessionKey]