9

我正在为 ASP.NET MVC 中的未经身份验证的用户实现一个简单的会话购物车,我想把它做对。

在过去,我总是将购物车 ID 存储在持久Session["CartID"]存储中并作为 cookie。Carts每当我需要显示购物车时,我都会从我的和CartItems表格中查找用户的购物车项目。但是在里面我知道一个更强类型的方法会更干净。

在谷歌搜索最新的会话 MVC 内容后,我找到了术语HttpSessionStateWrapper,这似乎是一种可测试的处理会话的方式。但是我还没有找到任何好的教程或标准化的实现。也许这只是一个流行词,我应该坚持下去Session["..."]

在最新版本的 ASP.NET MVC 中使用会话实现购物车的正确方法是什么?

4

2 回答 2

4

Steve Sanderson 在他的 Pro ASP.NET MVC 2 Framework 一书中给出了一个很好的例子,说明如何在 ASP.NET MVC 中使用会话来实现购物车。如果你没有这本书,你可以在这里阅读。这是一种非常简洁的方法。这个想法是创建一个模型绑定器,从会话中获取购物车。使用购物车的操作将使模型绑定器“注入”购物车。当您测试这些方法时,您的测试应该负责将购物车传递给操作。

于 2010-11-22T19:05:33.160 回答
0

MVC 使用 HttpContext 类的可测试和可模拟抽象,称为 HttpContextBase。您根本不需要包装器,仍然可以很好地模拟和单元测试您的控制器。

我在谷歌上找到的第一个例子: http ://weblogs.asp.net/andrewrea/archive/2009/08/10/mocking-the-session-object-with-moq-inside-asp-net-mvc-and-having -a-clean-builder-method-for-session-values-in-the-controller.aspx

于 2010-11-22T18:48:03.990 回答