我正在学习ASP.NET MVC,我有一些问题要理解并以正确的方式使用session
。让我解释一下我所做的和我想要实现的目标。
首先,我在Home控制器的Index方法中创建一个包含Products列表的会话。我还在列表中添加了一些默认产品,如下所示:
Session["ShoppingCart"] = new List<Products>() { new Products { ID = 1 }, new Products { ID = 2 } };
(我的目标是稍后在其他控制器中使用此会话以便能够添加产品,但是现在我只想进行一些测试。)
然后在Shop控制器中,我有一个动作方法来显示购物车的内容。这是我开始迷失在这个美好世界的地方。
我无法解决的问题是如何处理Session [“ShoppingCart”]以便我可以查看列表中的产品列表!?我应该有一个IEnumerable视图能够用剃刀迭代它的列表吗?
答案 0 :(得分:2)
你可以像这样编码
List<Products> list = (List<Products>)Session["ShoppingCart"];
@foreach(var item in list)
{
do what ever
}
我希望我为你工作。
答案 1 :(得分:0)
在这种情况下,您可以做的最好的事情是定义购物车类:
public class Cart{
IList<Products> Products {get; set;}
// any other properties that you would need or structure this in way to store quantities, prices per line and so on
}
然后假设您在会话中存储没有任何问题,您只需访问它(并且请注意您总是需要投射从Session获得的任何内容):
var cart = (Cart) Session["ShoppingCart"];
// do any work you need on the cart object
答案 2 :(得分:0)
您也可以使用下面给出的代码
var list = Session["ShoppingCart"] as List<Products>;
我更喜欢使用as关键字,因为没有100%保证会话将包含列表(由于应用程序池刷新,网站重新启动等)。给你额外的防御以避免NullReferenceException。
然后执行您的流程
if (list != null){
foreach(var item in list)
{
your custom code
}
}
希望这可以帮助你