2013-12-24 2 views
1

Я новичок в asp.net и C#. Я использую массив сеанса для хранения списка значений в сеансе. но когда я пытаюсь отобразить значения, используя метод response.write, он не дает точных значений в сеансе, вместо этого он говорит «System.Collections.ArrayList». код, который я использовал для добавления значений в сеанс, показан ниже.Отображение значений из массива сеансов

protected void Page_Load(object sender, EventArgs e) 
{ 

    if (Session["Cart"] == null) 
    { 
     Session["Cart"] = new ArrayList(); 
    } 

    else 
    { 
     ArrayList cart = (ArrayList)Session["Cart"]; 
    } 


} 

protected void addtocart_Click(object sender, EventArgs e) 
{ 
    int dealid = Convert.ToInt32(Request.QueryString.Get("deal")); 
    ArrayList cart1 = new ArrayList(); 

    cart1 = (ArrayList)Session["Cart"]; 

    cart1.Add(dealid); 

    Session["Cart"] = cart1; 

    Response.Write(Session["Cart"].ToString()); 
} 

}

может кто-нибудь помочь мне, чтобы отобразить значения, которые хранятся в сессии. пожалуйста.

ответ

1

Вы не можете response.write(Session["Cart"].Tostring()), потому что Session["Cart"] - ArrayList. Вы должны что ArrayList проходной перед тем response.write, как показано ниже:

protected void addtocart_Click(object sender, EventArgs e) 
{ 

int dealid = Convert.ToInt32(Request.QueryString.Get("deal")); 
ArrayList cart1 = new ArrayList(); 

cart1 = (ArrayList)Session["Cart"]; 

cart1.Add(dealid); 

Session["Cart"] = cart1; 

ArrayList cart2 = new ArrayList(); 

cart2 = (ArrayList)Session["Cart"]; 
foreach(var item in cart2) 
{ 
    Response.WriteLine(item); 
} 

}

0

Потому что вы поместили ArrayList в Session. И затем он вернул его вам, когда вы вызываете Session ["Корзина"]. Если вы хотите, чтобы отобразить все элементы из этого списка, то вам нужно перебирать их, как это:

protected void addtocart_Click(object sender, EventArgs e) 
{ 
    int dealid = Convert.ToInt32(Request.QueryString.Get("deal")); 
    ArrayList cart1 = new ArrayList(); 

    cart1 = (ArrayList)Session["Cart"]; 

    cart1.Add(dealid); 

    Session["Cart"] = cart1; 

    // iterate items in session 
    ArrayList cart = Session["Cart"] as ArrayList; 
    foreach(var item in cart) 
    { 
     Response.Write(item.ToString()); 
    } 
} 

Еще одна вещь, что использование

List<int> 

полезнее и лучше, что ArrayList, потому что вы не нужно бросать объекты в нужный тип.

+0

Благодарю вас, господин Сергий Литвинов. это большая помощь .. – 2964349

0

Нет необходимости назначать cart1 обратно на сеанс в Session["Cart"] = cart1;. Чтобы напечатать товар, вам нужно написать что-то вроде Response.Write(Session["Cart"][0].ToString());

0

Идите по арраисту и постройте необходимую строку.

StringBuilder sb = new StringBuilder(); 
foreach(var obj in cart1) 
{ 
    sb.Append(obj.ToString()) 
} 
Response.Write(sb.ToString()); 
0

В Visual Studio есть функциональность отладки. Установите контрольные точки в свой код. Запустите проект и выполните свой код с помощью F10 или F11. Нажмите на значение и посмотрите его содержимое. Больше информации? See this

0

Для отображения ArrayList элемента из массива используется код ниже:

foreach (var item in (ArrayList)Session["Cart"]) 
{ 
      Response.Write(item); 
} 
2

Вы должны сделать петлю для отображения всех значений в сеансе.

private ArrayList cart 
{ 
    get 
    { 
     if (Session["Cart"] == null) 
     { 
      Session["Cart"] = new ArrayList(); 
     } 
     return (ArrayList)Session["Cart"]; 
    } 
    set 
    { 
     Session["Cart"] = value; 
    } 
} 

protected void addtocart_Click(object sender, EventArgs e) 
{ 
    int dealid = Convert.ToInt32(Request.QueryString.Get("deal")); 
    cart.Add(dealid); 
    foreach (var item in cart) 
    { 
     Response.Write(item.ToString()); 
    } 
} 
Смежные вопросы