2009-09-09 21 views
2

如何在C#中编写此代码?你可以使用Dictionary来做到这一点吗?PHP到C#.NET/ASP.NET

$count = 0; 
if(count($_SESSION['goods']) > 0) { 
    $count = count($_SESSION['goods']) -1; // array start on zero. 
} 

$_SESSION['goods'][$count]["products_id"] = $_POST["products_id"]; 
$_SESSION['goods'][$count]["price"] = $_POST["price"]; 
$_SESSION['goods'][$count]["number"] = $_POST["number"]; 
+5

建议您发布您的尝试... – 2009-09-09 11:07:51

回答

1

有很多方法可以做到这一点,但这里有一个简单的方法。 (此代码将需要在后面的页面代码,因为它需要Page.Session属性)

首先,你可能需要一个产品实体来存储你的数据:

[Serializable] 
public class Product 
{ 
    public int ProductId{get;set;} 
    public int Price{get;set;} 
    public int Number{get;set;} 
} 

然后你就可以将您的产品存储在如下会话中:

public void AddProductToSession(Product product) 
{ 
    var products = Session["goods"] as Dictionary<int, Product>; 
    if (products == null) products = new Dictionary<int, Product>(); 
    products.Add(product.ProductId, product); 
    Session["goods"] = product; 
} 

public Product GetProductFromSession(int productId) 
{ 
    Product product; 
    var products = Session["goods"] as Dictionary<int, Product>; 
    if (products == null || !products.TryGetValue(productId, out product)) 
    throw Exception(string.Format("Product {0} not in session", productId)); 
    return product; 
} 
+0

谢谢! 我已经编程了几年的PHP,但现在已经过去了。净。这是我想知道的事情之一。净:) – sv88erik 2009-09-09 11:59:25

0

您将需要在C#中做更多的工作。

首先,您需要定义一个类来容纳购物车物品,并将其称为CartItem。然后,您将实例化一个CartItem对象,将其字段设置为帖子值,最后您将购物车项添加到列表中,该列表将保存在Session对象中。

祝你好运:)

0

方法很多,根据规划的存储和访问方法,以及所需的数据结构的大小。

例如,一种方法是使用products_id,price和number成员变量创建一个对象,并将其存储在数组中,然后存储到Cache/Session中。