我正在定制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。
谢谢!
答案 0 :(得分:2)
如果要将int存储到Session对象而不是GUID中,则需要将对象强制转换为int。
int x =(int)context.Session [CartSessionKey]