会话存在,但是为空

时间:2013-06-25 13:18:49

标签: c# asp.net-mvc-4

目标

我的应用程序中有一个购物车,我需要检查它是否为空。

问题

查找

@if (Session["ProductsSummary"] == null)
{
    // Do something
}

如您所见,这段代码检查会话是否为空。当我向购物车添加内容时 - 第一次 - 我创建了一个会话(称为ProductsSummary)并在其中存储了一些内容(有关添加的产品的一些信息)。

当我从Shopping Cart(或ProductsSummary - 根据您的意愿)删除此项目时,我会将其从会话中删除,但会话仍然有效。换句话说,会话不再为空,但是为空。

我需要的是很简单:如何检查会话是否为空

技术细节

我正在使用C#.NET + MVC 4 + Razor Engine。

只是为了知识

我正在使用KnockoutJS

2 个答案:

答案 0 :(得分:1)

这样的东西?

@if (!string.IsNullOrEmpty(Session["ProductsSummary"] as string))
{

}

答案 1 :(得分:1)

如果您不想删除“ProductSummary”对象,只需执行Session.Remove("ProductSummary")即可。如果您希望完全无效会话,以便在后续请求中创建另一个会话,则可以致电Session.Abandon()

我相信你对会话的内容有点误解。 Session是一个键/值存储。 Session["ProductSummary"] = foo;不会创建新会话,而是将您的对象添加到现有会话中。

从技术上讲,你不应该检查它是否为空。应用程序中的其他代码应该能够期望在会话中存储数据。例如,Controller.TempData将数据存储在会话中,并在后续请求中使用它。