我刚刚开始学习如何建立一个网站,我在使用会话创建购物车时遇到了一些问题。
这是我的型号代码:
public class Cart
{
public Cart()
{
Products = new List<ProductStock>();
}
public List<ProductStock> Products { get; set; }
public void AddToCart(Product product, Store store, int quantity)
{
Products.Add(new ProductStock
{
ProductID = product.ProductID,
Product = product,
StoreID = store.StoreID,
Store = store,
Quantity = quantity
});
}
}
这是控制器代码,我想在视图页面中使用的会话被称为&#34; cart&#34;:
public class CartController : Controller
{
private MagicInventoryEntities db = new MagicInventoryEntities();
public ActionResult Index()
{
Cart cart = (Cart) Session["cart"];
return View(cart);
}
[HttpPost]
public ActionResult AddToCart(int productID, int storeID, int quantity)
{
Product product = db.Products.Find(productID);
Store store = db.Stores.Find(storeID);
Cart cart = (Cart) Session["cart"];
cart.AddToCart(product, store, quantity);
return new RedirectToRouteResult(new RouteValueDictionary(
new
{
action = "Index",
controller = "Cart"
}));
}
protected override void Dispose(bool disposing)
{
if (disposing)
{
db.Dispose();
}
base.Dispose(disposing);
}
}
此代码来自我的老师,我的笔记不是很清楚,我没有足够的时间来编写有关视图页面的详细信息。他说他将在星期一再次展示这个过程,我只是不想等待,我想弄明白并继续前进。我只知道调用会话的基本方法是&#34; @session [&#34; SessionName&#34;]。ToString()&#34;。我已经在我的方法(会话[&#34; testing&#34;] = ProductID)中尝试过,我可以获得该值。但是,我不知道如何从Session [&#34; cart&#34;]获得价值。
答案 0 :(得分:0)
假设您在会话中保存了类型为Cart的对象,为了检索该对象,您可以在索引视图中使用以下代码:
@{
Cart cart = HttpContext.Current.Session["Cart"] as Cart;
}
但是,我看到CartController中的Index方法已经从Session中检索对象并将其传递给Index视图。要访问它,您必须在索引视图中编写以下代码:
@model {ProjectName}.Models.Cart //you tell the View what type of object it should expect to receive; instead of {ProjectName} write your project name
@foreach(var product in Model.Products) { //you access the received object by using the keyword Model
<div>
@product.ProductId
</div>
}
如您所见,此示例为您的产品列表中的ProductStock类型的每个项目创建一个div,并在其中写入当前ProductStock ProductId的值。
如果您的会话中没有保存类型为Cart的对象,则可以将以下代码添加到Index方法中:
if(Session["Cart"] == null)
{
var cart = new Cart();
Session["Cart"] = cart;
}
Cart cart = (Cart) Session["cart"];
return View(cart);