使用Session抛出异常传递变量

时间:2013-04-10 09:27:47

标签: c# asp.net session

我有一张表格供客户填写,所以我决定把它变成一个数字形式。我有三页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页面不是我的下一页,因为我必须首先通过我的package.aspx和bank_details.aspx?

我在没有if语句的会话上需要字段验证器,因此文本不会为空

1 个答案:

答案 0 :(得分:0)

您没有设置所有会话变量。例如,您尚未设置Session["Email"],因此对lblMail.Text = Session["Email"].ToString();的调用将抛出异常。

您应该填充要使用的所有会话变量,并在执行.ToString()之前检查它们是否为空。这应该更优雅地抓住它。