如何在page_load中使用会话字段?

时间:2014-09-03 18:28:45

标签: c# asp.net

我有一个网页表单,它使用两个页面,一个是主页面,另一个是您可以通过我的主页上的Response.Redirect访问的页面,或者您可以通过了解导航到它URL。但是,因为我有

int field4 = (int)(Session["field4"]); //flag to see if the source page redirected to the override page

在我的第二页上的Page_Load方法中,如果我通过将会话字段设置为等于之前的值而从第一页到达那里,那么我会得到Object reference not set to an instance of an object.例外

有什么想法吗?

3 个答案:

答案 0 :(得分:3)

您正在尝试将null值转换为int类型, 所以在页面加载检查第一

    if (Session["field4"]!=null )
    {
        int field4 = (int)(Session["field4"]); 
    }

答案 1 :(得分:1)

您只需要检查会话变量是否已设置,(因此键返回的值不等于null)。

如果您没有使用field4中的值进行任何处理,则可以执行以下操作:

bool didUserArriveViaTheHomePage = (Session["field4"] != null);

如果您需要该值,则可以在投射前使用as operator检查是否可以投射,或者您可以使用nullable int

答案 2 :(得分:1)

始终检查NULL是否有ViewState,Session,Application等状态变量

if(!Page.IsPostBack)
{
if(Session["field4"]!=null)
int field4 = (int)(Session["field4"]);

}