我有一个网页表单,它使用两个页面,一个是主页面,另一个是您可以通过我的主页上的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.
例外
有什么想法吗?
答案 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"]);
}