當前位置:首頁 » 網購平台 » aspnet購物車session
擴展閱讀
寧波奧德賽優惠價格 2021-03-15 14:26:02
丹尼斯購物卡能掛失么 2021-03-15 14:25:58
淘寶購物指紋驗證失敗 2021-03-15 14:24:44

aspnet購物車session

發布時間: 2021-03-04 07:55:24

❶ ASP.NET中如何用session來實現購物車的功能

Session 對象用於存儲用戶的信息。存儲於 session 對象中的變數持有單一用戶的信息,並且對於一個應用程序中的所有頁面都是可用的。
Session 對象
當您操作某個應用程序時,您打開它,做些改變,然後將它關閉。這很像一次對話(Session)。計算機知道您是誰。它清楚您在何時打開和關閉應用程序。但是在網際網路上有一個問題:由於 HTTP 地址無法存留狀態,web 伺服器並不知道您是誰以及您做了什麼。

ASP 通過為每位用戶創建一個唯一的 cookie 的方式解決了這個問題。cookie 被傳送至客戶端,它含有可識別用戶的信息。這種介面被稱作 Session 對象。

Session 對象用於存儲關於用戶的信息,或者為一個用戶的 session 更改設置。存儲於 session 對象中的變數存有單一用戶的信息,並且對於應用程序中的所有頁面都是可用的。存儲於 session 對象中的信息通常是 name、id 以及參數。伺服器會為每個新的用戶創建一個新的 Session,並在 session 到期時撤銷掉這個 Session 對象。
Session 何時開始?
Session 開始於:

•當某個新用戶請求了一個 ASP 文件,並且 Global.asa 文件引用了 Session_OnStart 子程序時;
•當某個值存儲在 Session 變數中時;
•當某個用戶請求了一個 ASP 文件,並且 Global.asa 使用 <object> 標簽通過 session 的 scope 來例示某個對象時;
Session 何時結束?
假如用戶沒有在規定的時間內在應用程序中請求或者刷新頁面,session 就會結束。默認值為 20 分鍾。

如果您希望將超時的時間間隔設置得更長或更短,可以設置 Timeout 屬性。

下面的例子設置了 5 分鍾的超時時間間隔:

<%
Session.Timeout=5
%>要立即結束 session,可使用 Abandon 方法:

<%
Session.Abandon
%>注意:使用 session 時主要的問題是它們該在何時結束。我們不會知道用戶最近的請求是否是最後的請求。因此我們不清楚該讓 session「 存活」多久。為某個空閑的 session 等待太久會耗盡伺服器的資源。然而假如 session 被過早地刪除,那麼用戶就不得不一遍又一遍地重新開始,這是因為伺服器已經刪除了所有的信息。尋找合適的超時間隔時間是很困難的。

提示:如果您正在使用 session 變數,請不要在其中存儲大量的數據。
存儲和取回 session 變數
Session 對象最大的優點是可在其中存儲變數,以供後續的網頁讀取,其應用范圍是很廣的。

下面的例子把 "Donald Duck" 賦值給名為 username 的 session 變數,並把 "50" 賦值給名為 age 的 session 變數:

<%
Session("username")="Donald Duck"
Session("age")=50
%>一旦值被存入 session 變數,它就能被 ASP 應用程序中的任何頁面使用:

Welcome <%Response.Write(Session("username"))%>上面這行程序返回的結果是: "Welcome Donald Duck"。

也可以在 session 對象中保存用戶參數,然後通過訪問這些參數來決定向用戶返回什麼頁面。

下面的例子規定,假如用戶使用低顯示器解析度,則返回純文本版本的頁面:

<%If Session("screenres")="low" Then%>
This is the text version of the page
<%Else%>
This is the multimedia version of the page
<%End If%>移除 session 變數
contents 集合包含所有的 session 變數。

可通過 remove 方法來移除 session 變數。

在下面的例子中,假如 session 變數 "age" 的值小於 18,則移除 session 變數 "sale":

<%
If Session.Contents("age")<18 then
Session.Contents.Remove("sale")
End If
%>如需移除 session 中的所有變數,請使用 RemoveAll 方法:

<%
Session.Contents.RemoveAll()
%>遍歷 contents 集合
contents 集合包含所有的 session 變數。可通過遍歷 contents 集合,來查看其中存儲的變數:

<%
Session("username")="Donald Duck"
Session("age")=50

dim i
For Each i in Session.Contents
Response.Write(i & "<br />")
Next
%>結果:

username
age如果需要了解 contents 集合中的項目數量,可使用 count 屬性:

<%
dim i
dim j
j=Session.Contents.Count
Response.Write("Session variables: " & j)
For i=1 to j
Response.Write(Session.Contents(i) & "<br />")
Next
%>結果:

Session variables: 2
Donald Duck
50遍歷 StaticObjects 集合
可通過循環 StaticObjects 集合,來查看存儲在 session 對象中所有對象的值:

<%
dim i
For Each i in Session.StaticObjects
Response.Write(i & "<br />")
Next
%>

提供一些方法。

❷ 求ASP.NET購物車實現代碼,用SESSION實現的那種

這個是我自己寫的代碼,希望對你有幫助: public void GetBuyShop(int shopId)
{
//獲取當前點擊的商品信息
Shop shop = ShopManager.GetShopByShopId(shopId);
//獲取購物車
Dictionary<string, ShopItem> cart = Session["cart"] as Dictionary<string, ShopItem>;
//判斷購物車是否存在
if (cart == null)
{
cart = new Dictionary<string, ShopItem>();
} ShopItem shopitem = null;
//判斷當前添加的商品在購物車中是否村
foreach (string str in cart.Keys)
{
//如果相等,表示存在
if (str == shop.ShopName)
{
shopitem = cart[str];
}
} //如果為null,表示當前添加的商品早購物車中是不存在的
if (shopitem == null)
{
cart.Add(shop.ShopName, new ShopItem(shop, 1));
}
else
{
shopitem.Count = shopitem.Count + 1;
} Session["cart"] = cart;
Response.Redirect("~/Cart.aspx");
}

❸ ASP.NET中用session實現了購物車的功能,怎麼把購物車中的數據插入到資料庫的ShopCart表中購物車如下圖

你把session中數據取出來,在存啊,你這個頁面都已經把session數據讀出來了,你讀出來的同時在往資料庫插入數據不就OK了?

❹ asp.net 用cookie做個購物車,怎麼做

/// <summary>
/// 購買
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void imgb_Buy_Click(object sender, ImageClickEventArgs e)
{
if (Session["CurrentUser"] != null)
{
if (Session["Cart"] == null)
{
this.BuildCart();
}
else
{
DataTable cart = Session["Cart"] as DataTable;
if (this.ExistBook(cart))
{
this.BuildSession(cart);
}
}
Response.Redirect("Cart.aspx");
}
else
{
Response.Redirect(@"Membership\UserLogin.aspx");
}
}
/// <summary>
/// 已有圖書
/// </summary>
/// <param name="cart"></param>
/// <returns></returns>
public bool ExistBook(DataTable cart)
{
foreach (DataRow dr in cart.Rows)
{
if (dr["BookName"].ToString().Equals(this.lblBookName.Text.Trim()))
{
dr["Number"] = Convert.ToInt32(dr["Number"]) + 1;
Session["Cart"] = cart;
Response.Redirect("Cart.aspx");
}
}
return true;
}
/// <summary>
/// 新建購物車表
/// </summary>
public void BuildCart()
{
DataTable cart = new DataTable();
cart.Columns.Add("BookId");
cart.Columns.Add("BookName");
cart.Columns.Add("Number");
cart.Columns.Add("UnitPrice");
cart.Columns.Add("ImageUrl");

this.BuildSession(cart);
}
/// <summary>
/// 添加新書
/// </summary>
/// <param name="cart"></param>
public void BuildSession(DataTable cart)
{
DataRow dr = cart.NewRow();
dr["BookId"] = ViewState["BookId"].ToString();
dr["BookName"] = this.lblBookName.Text.Trim();
dr["Number"] = "1";
dr["UnitPrice"] = this.lblPrice.Text.Substring(0, this.lblPrice.Text.Length - 1); ;
dr["ImageUrl"] = this.lblISBN.Text.Trim();
cart.Rows.Add(dr);

Session["Cart"] = cart;
}

❺ ASP.NET session 版購物車,哪位大俠幫忙寫一下

首先,LZ需要一個計算邏輯的類,下面是代碼
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Collections;
using System.Collections.Generic;

namespace siteadmin
{
[Serializable]
public class CartItem
{
private int _proctID;
private string _proctName;
private int _quantity;
private decimal _price;
private decimal _lineTotal;
public int ProctID
{
get { return _proctID; }
set { _proctID = value; }
}
public string ProctName
{
get { return _proctName; }
set { _proctName = value; }
}
public int Quantity
{
get { return _quantity; }
set { _quantity = value; }
}
public decimal Price
{
get { return _price; }
set { _price = value; }
}
public decimal LineTotal
{
get { return _quantity * _price; }
}

public void New(int proctID, string proctName, int quantity, decimal price)
{
_proctID = proctID;
_proctName = proctName;
_quantity = quantity;
_price = price;
_lineTotal = Quantity * Price;
}
}

public class ShoppingCart
{
private DateTime _dateCreated;
private DateTime _lastUpdate;
private List<CartItem> _items;
public List<CartItem> Items
{
get { return _items; }
set { _items = value; }
}
public decimal Total
{
get
{
decimal t = 0;
if (_items == null)
{
return 0;
}
foreach (CartItem item in _items)
{
t += item.LineTotal;
}
return t;
}
}

public ShoppingCart()
{
if (this._items == null)
{
this._items = new List<CartItem>();
this._dateCreated = DateTime.Now;
}
}

public void Insert(int proctID, decimal price, int quantity, string proctName)
{
int itemIndex = ItemIndexOfID(proctID);
if (itemIndex == -1)
{
CartItem newItem = new CartItem();
newItem.ProctID = proctID;
newItem.Quantity = quantity;
newItem.Price = price;
newItem.ProctName = proctName;

_items.Add(newItem);
}
else
{
_items[itemIndex].Quantity += quantity;
}
_lastUpdate = DateTime.Now;
}
public void Update(int rowID, int quantity)
{
CartItem item = _items[rowID];
item.Quantity = quantity;
_lastUpdate = DateTime.Now;
}
public void DeleteItem(int rowID)
{
_items.RemoveAt(rowID);
_lastUpdate = DateTime.Now;
}

private int ItemIndexOfID(int proctID)
{
int index = 0;
foreach (CartItem item in _items)
{
if (item.ProctID == proctID)
{
return index;
}
index += 1;
}
return -1;
}
}
}
接下來,LZ需要用session持久化數據
入添加商品,我們假設從請求頁讀取到操作addcart
if(Request["topp"]=="addcart")
{

string pdtid=Request["pdtid"];
if(!YTLib.publicOP.IsNumString(pdtid)||pdtid==null)
pdtid="0";
if(pdtid=="0")
{
Response.Write("<script language=\"javascript\">alert(\"You add the proct is wrong!\");window.location.href=\"" + pageno + "\"</script>");
return;
}
string quantity=Request["quantity"+pdtid];
if(!YTLib.publicOP.IsNumString(quantity)||quantity==null||quantity.Length==0)
quantity="1";
DataTable dtpdt=siteadmin.Utilities.GetPdtDetailById(int.Parse(pdtid));
int proctId=int.Parse(pdtid);
string price=dtpdt.Rows[0]["PdtPrice"].ToString();
string proctName=dtpdt.Rows[0]["PdtTitle"].ToString();
if(Session["cart"]==null)
Session["cart"]=new ShoppingCart();
ShoppingCart cart = (ShoppingCart)Session["cart"];
cart.Insert(proctId,Convert.ToDecimal(price), int.Parse(quantity), proctName);
Response.Write("<script language=\"javascript\">alert(\"Proct successfully added!\");window.location.href=\"" + pageno + "\"</script>");
}

❻ 請問asp.net做購物車的時候 用session還是cookie還是用全局變數

看你做的購物車是保存在客戶端的內存中
還是保存在資料庫中啊
如果是專保存在內存中,就用屬cookie好一些,因為 如果保存在session中,會暫用伺服器資源,
如果保存在資料庫中,那就更好辦了,添加一次到購物車就執行操作資料庫一次

❼ ASP.NET中用session實現了購物車的功能,接下去怎麼弄怎麼結算提交訂單啊 求大神幫忙啊!!!

現在就是把你購物車中的數據提交到資料庫,保存在資料庫中的訂單的相關數據表中!

❽ ASP.NET+SQL Server +Session+購物車

在事物未處理完,不能立即更改真實表數據。

要做臨時表。

兄弟認真想下。換思路來做。

未結束更新數據這個是萬萬不能的。

❾ asp.net中用session保存購物車數據問題

你好:
1.你可能在Page_Load中沒有做
if(!this.IsPostBack)
{
}
判斷,建議你把你的從session中讀取值,來綁定數據的過程,放在這個判斷里執行.
2.使用Application是肯定不可以的,因為Application里存的是全部用戶都能訪問的數據,購物車,應該是不同用戶有不同數據.