내 asp.net 웹 사이트는 웹 사이트 실행이 중지 된 후에도 목록의 변수 (장바구니)를 저장합니다. 로그인하는 다른 사용자가 동일한 항목 목록 (쇼핑 카트)을 보게되므로 위험합니다. 목록에 항목을 추가 한 다음 브라우저를 닫은 다음 웹 사이트를 다시 실행하고 장바구니에 항목을 추가하지만 브라우저를 다시 열기 전에 추가 한 항목이 계속 표시됩니다. 이전에 웹 응용 프로그램을 사용하고 비슷한 코드를 사용했을 때 이런 일이 발생하지 않았습니다. 이 문제를 해결할 방법이 있습니까? 클라이언트 측에 ASP.NET 웹 사이트를 닫은 후에도 변수가 저장됩니다.
, 나는 쇼핑 카트에 추가 버튼과 쇼핑 항목의 gridview에 전체를 가지고 :protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
{
if (e.CommandName == "AddToCart")
{
int rowIndex = ((GridViewRow)((Button)e.CommandSource).NamingContainer).RowIndex;
GridViewRow row = GridView1.Rows[rowIndex];
Label ID = (Label)row.FindControl("lblItemId");
int itemID = Convert.ToInt32(ID.Text);
lstCart.Items.Clear();
OrderClass.AddToCart(itemID);
lstCart.DataSource = OrderClass.ViewAllOrderItem();
lstCart.DataBind();
Button clicked = (Button)row.FindControl("btnAddToCart");
clicked.Enabled = false;
Button remove = (Button)row.FindControl("btnRemoveFromCart");
remove.Visible = true;
}
이 호출이 보이는 정적 클래스라고 주문 클래스에서입니다 방법 이 같은
는private static List<Tuple<string, string>> allItems = new List<Tuple<string, string>>();
private static List<string> itemList;
public static void AddToCart(int itemID)
{
ItemCart.Add(itemID);
}
다음 쇼핑 카트에 모든 항목을 표시하는 데이터 소스로서리스트 박스를 제공하는 방법이므로 :
public static List<string> ViewAllOrderItem()
{
allItems = ItemCart.GetAllOrderItems();
itemList = new List<string>();
foreach (Tuple<string, string> eachItem in allItems)
{
itemList.Add("Item Name= " + eachItem.Item1 + " , Price= " + eachItem.Item2);
}
return itemList;
}
이 주문 클래스를 호출하는 Itemcart라는 정적 클래스의 방법은
private static List<int> orderItems = new List<int>();
public static void Add(int itemID)
{
orderItems.Add(itemID);
}
및
public static List<Tuple<string,string>> GetAllOrderItems()
{
return ShoppingItems.GetItems(orderItems);
}
ItemCart가 호출하는 정적 수준의 쇼핑 항목의 방법입니다 :
public static List<Tuple<string, string>> GetItems(List<int> itemID)
{
List<Tuple<string, string>> currentItemsList = new List<Tuple<string, string>>();
using (DataConnection con = new DataConnection())
{
foreach (int i in itemID)
{
string itemName = con.GolfItems.Where(gi => gi.ItemID == i).Select(gi => gi.ItemName).FirstOrDefault();
string itemPrice = con.GolfItems.Where(gi => gi.ItemID == i).Select(gi => gi.ItemPrice).FirstOrDefault();
currentItemsList.Add(Tuple.Create(itemName, itemPrice));
}
}
return currentItemsList;
}
[mcve]가 도움이됩니다. 이것은 너무 많은 원인이 될 수 있습니다. –
일부 코드를 제공 할 수 있다면 문제가있는 곳을 확인하는 데 도움이 될 것입니다. – MichaelDotKnox
@ DanielA.White 코드를 추가했으며 최소, 완전하며 검증 가능한 예제 표준에 맞기를 바랍니다. 한번 봐주세요. –