【问题标题】:Using Session variable within foreach [duplicate]在foreach中使用会话变量[重复]
【发布时间】:2018-07-11 04:23:33
【问题描述】:

是否可以在cshtml文件中使用foreach,并使用Session变量?

我想做这样的事情:

@foreach (var item in Session["Cart"])

有可能吗?

【问题讨论】:

  • 为什么不直接测试一下?
  • 视情况而定。 Session["Cart"] 中究竟存储了什么?因为这将决定你能做什么。它是一个数组,还是List<[type]>,还是IEnumerable<[type]>?请更具体地说明上下文是什么。
  • @MGoward 列表 ..
  • 好吧,这更有意义。

标签: c# asp.net-mvc razor


【解决方案1】:
if(Session["Cart"] != null)
{
    foreach (var item in (Session["Cart"] as List<[type]>))
    {
       //do whatever you need to do
    }
}

所以答案是肯定的

【讨论】:

  • 谢谢,但我现在有一个小问题:我有一个名为“产品”的模型(这是“类型”)但它没有找到它..虽然我找到了:@model List
  • 我可以查看更多代码吗?这对我有帮助
  • 这里是html文件:pastebin.com/YY01j1LX,这里是模型:pastebin.com/c20X6Ufs
  • 嗯,它看起来应该可以工作了。我不确定可以做什么。我建议再问一个问题,看看其他人是否可以给你答案。很抱歉没能再帮到你了……
  • 非常感谢。
【解决方案2】:

只要存储在Session["Cart"] 中的对象实现IEnumerable(包括数组和遗留集合)或IEnumerable&lt;T&gt;(包括泛型集合),您就可以在foreach 循环中使用它。

public void MyActionMethod()
{
    var list = Session["Cart"] as IEnumerable<Products>;
    if (list == null) throw new Exception("Cart not found or cannot be enumerated.");

    return View(list.ToList());
}

在你的cshtml中:

@model List<Products>

@foreach (var product in Model)
{
    //Do something with product
}

【讨论】:

  • 谢谢,但我遇到了一点问题。您介意看看我在经过验证的答案(上图)的评论中描述的问题吗?
  • 您可能应该从控制器(作为模型)传入列表。然后在您的 cshtml 中,您将使用 @foreach (var item in Model).
  • 我想这是一种间接的解决方案。这正是我为克服这个问题所做的,但我认为有直接的解决方案。谢谢
猜你喜欢
  • 2011-12-23
  • 1970-01-01
  • 2010-12-24
  • 2018-01-21
  • 1970-01-01
  • 2013-05-15
  • 2016-02-29
  • 1970-01-01
相关资源
最近更新 更多