2012-05-30 3 views
0

Почему возникает следующий код, вызывающий ошибку «Ссылка на объект не установлена ​​в экземпляр объекта Даже когда я использую установленный метод сеанса в одной из кнопок, нажмите кнопку события?Невозможно передать переменную сеанса Содержащий список Объект в список

public partial class MergePopUp : System.Web.UI.Page 
{ 

List<MergeAccounts> Mlist = new List<MergeAccounts>(); 

protected void Page_Load(object sender, EventArgs e) 
{ 

} 
private void SetSession() 
{ 
    if (Session["Account"] == null) 
    { 
     Session["Account"] = Mlist; 
    } 
} 


protected void AddToMergeList_Click(object sender, EventArgs e) 
{ 
    MergeAccounts obj = new MergeAccounts(); 
    obj.AccountNumber = Convert.ToInt32(AccountNumber.Text); 
    obj.PinNumber = Convert.ToInt32(PinNumber.Text); 
    int temp = obj.IsAccNoValid(obj.AccountNumber, obj.PinNumber); 
    if (temp == 0) 
    { 
     FoundOrNot.Visible = true; 
     FoundOrNot.Text = "Enter a valid Pin Number against this Account number"; 
    } 
    else 
    { 
     DataSet MyDataSet = obj.ShowDetails(obj.AccountNumber, obj.PinNumber); 
     foreach (DataRow myRow in MyDataSet.Tables[0].Rows) 
     { 
      AccountTitle.Text = myRow["Title"].ToString(); 
      Balance.Text = myRow["Balance"].ToString(); 
      CreationDate.Text = myRow["CreationDate"].ToString(); 
     } 
     obj.AccountTitle = AccountTitle.Text; 
     obj.Balance = Convert.ToDouble(Balance.Text); 
     obj.CreationDate = Convert.ToDateTime(CreationDate.Text); 
     Mlist.Add(obj); 
     Session["Account"] = Mlist; 
     SetSession(); 
    } 
} 
protected void AddNext_Click(object sender, EventArgs e) 
{ 
    foreach (TextBox i in this.Page.Form.Controls.OfType<TextBox>().ToList()) 
    { 
     i.Text = null; 
    } 
    FoundOrNot.Visible = false; 
} 
protected void CheckList_Click(object sender, EventArgs e) 
{ 
    SetSession(); 
    Response.Redirect("Merge.spx"); 
} 

} 
+0

вы можете показать нам, где вы сначала наполните вашу сессию [ «счета»]? потому что прямо сейчас вы пытаетесь передать все, что находится в Session ["account"], на ваш Mlit. Вероятно, это не работает, потому что вы не правильно заполняете сеанс. – Thousand

ответ

0

являются две кнопки на этой странице? Если это так, создайте метод, доступный для обеих кнопок, где установлена ​​переменная сеанса. Убедитесь, что вы установили, что он уже установлен так, что он установлен только один раз.

private void SetSession() 
{ 
    if(Session["Account"] == null) 
     Session["Account"] = "Value"; 
    else 
     //what do you want to do here 
} 


protected void button1_click(.....) 
{ 
    SetSession(); 
    //do something 
} 

protected void button2_click(....) 
{ 
    SetSession(); 
    //redirect 
} 

этого сеанс всегда устанавливаются первая кнопка или вторая кнопка нажата ли

+0

Yup две кнопки на странице. ... является значением aC# Ключевое слово, которое вы использовали здесь? –

+0

, который должен быть заменен значением, которое вы хотите присвоить переменной сеанса – codingbiz

+0

По-прежнему такая же ошибка:/ –

1

Session [ "Счет"], вероятно, нулевым.

+0

Tunmise fasipe: Actuslly Я принимаю List в переменной сессии в одном событии Click Click и перенаправляя страницу из события 2-го нажатия кнопки. Thats the reson this Null ... Есть ли какой-то выход, чтобы я мог сохранить свою переменную сеанса this путь?? –

0

Поставьте точку останова здесь

Mlit = (List<MergeAccounts>)Session["Account"]; 

Тогда р ress F5, чтобы выполнить ваше приложение и навести указатель мыши на сеанс [«Учетная запись»], чтобы проверить значение - возможно, это нуль

+0

Tunmise fasipe: Actuslly Я принимаю List в переменной сессии в одном событии Click Button и перенаправляю страницу из события 2-го нажатия кнопки. Это резол это Null ... ** Есть ли какой-то выход, который я могу сохранить переменная сеанса таким образом? ** –

+0

проверить мои комментарии здесь – codingbiz

Смежные вопросы