2013-04-10 48 views
0

我有一個表格供客戶填寫,所以我決定將其設置爲數字形式。我有三頁subscriber_details,Package_Selection和Bank_Details。當用戶在第一個填寫完所有字段並點擊下一頁時,頁面前進到下一個頁面,直到所有三個頁面都被填充完畢,當所有三個頁面都填滿時,他們直接進入最後一頁,最後一頁顯示所有的詳細信息,使他們能夠確保其正確的......我subscriber_details.aspx我有下面的代碼到他們的詳細信息存儲到會話使用會話傳遞變量拋出異常

protected void btnNext_Click(object sender, EventArgs e) 
{ 
    Session["FullName"] = txtFullName.Text; 

    if (txtCompanyName.Text == String.Empty) 
     Session["CompanyName"] = "N/A"; 
    else 
    Session["CompanyName"] = txtCompanyName.Text; 

    if (txtVAT.Text == String.Empty) 
     Session["VAT"] = "N/A"; 
    else 
    Session["VAT"] = txtVAT.Text; 

    Session["ContactNumber"] = txtContactNumber.Text; 
    if (txtFax.Text == String.Empty) 
     Session["Fax"] = "N/A"; 
    else 
     Session["Fax"] = txtFax.Text; 

    if (txtDistrict.Text == String.Empty) 
     Session["District"] = "N/A"; 
    else 
     Session["District"] = txtDistrict.Text; 

    Session["City"] = txtCity.Text; 
    Session["Street"] = txtStreet.Text; 
    Session["Code"] = txtPostal.Text; 

    if (txtTrading.Text == String.Empty) 
     Session["Trading"] = "N/A"; 
    else 
    Session["Trading"] = txtTrading.Text; 

    Session["ID"] = txtID.Text; 
    Session["ContactPerson"] = txtContactPerson.Text; 

    if (txtEmail.Text == String.Empty) 
     Session["Email"] = "N/A"; 
    else 
    Session["Email"] = txtEmail.Text; 
} 

然後我final.aspx我有以下代碼來使用會話並替換標籤

protected void Page_Load(object sender, EventArgs e) 
{ 
    lblFullName.Text = Session["FullName"].ToString(); 
    lblCompanyName.Text = Session["CompanyName"].ToString(); 
    lblVat.Text = Session["VAT"].ToString(); 
    lblContactNumber.Text = Session["ContactNumber"].ToString(); 
    lblFax.Text = Session["Fax"].ToString(); 
    lblDistrict.Text = Session["District"].ToString(); 
    lblStreet.Text = Session["Street"].ToString(); 
    lblCity.Text = Session["City"].ToString(); 
    lblCode.Text = Session["Code"].ToString(); 
    lblTrading.Text = Session["Trading"].ToString(); 
    lblID.Text = Session["ID"].ToString(); 
    lblContactPerson.Text = Session["ContactPerson"].ToString(); 
    lblMail.Text = Session["Email"].ToString(); 


} 

由於某種原因,我得到一個「對象引用錯誤」的文字,是不是因爲我的final.aspx頁ISN」我的下一頁,因爲我必須先通過我的package.aspx和bank_details.aspx?

我已經要求在不具有if語句會議現場驗證,因此文本不會是空

回答

0

您沒有設置所有的Session變量。例如,您尚未設置Session["Email"],因此致電lblMail.Text = Session["Email"].ToString();將引發異常。

你應該填充你想要使用的所有會話變量,並在做.ToString()之前檢查它們是否爲空。這應該更優雅地抓住它。

+0

設置?好的原諒我問,你的意思是什麼?我已經在visual studio 2010中完成了這個工作,並且沒有任何問題,現在我正在使用2012,並且突然之間出現錯誤。 – 2013-04-10 10:05:07

+0

設置,如'Session [「Email」] =「[email protected]」;'。在你的問題中,你沒有設置它,更重要的是你不**檢查它**!在執行'.ToString()'之前,你應該總是檢查會話值,因爲你不能保證它已經被初始化了。 – Belogix 2013-04-10 10:07:48