Object reference not set to instance of an object when saving to session

早过忘川 提交于 2019-12-25 01:16:31

问题


When trying to save an order we first load the object from session. This works. Then we add information to the order and put it back into session. I then receive and Object reference not set to an instance of an object error.

Private Sub SaveOrder()
    'load the order
    Order = Session("Order")

    'Add order information here

    Session("Order") = Order 'The error is occurring here.
End Sub

The stack trace is as follows:

    Error Path: Contact.aspx
    Error Detail: Object reference not set to an instance of an object.
    Error Source: Void __RenderContent1(System.Web.UI.HtmlTextWriter, System.Web.UI.Control)
    Error Stack Trace:    at ASP.orderentry_uc3_contact_aspx.__RenderContent1(HtmlTextWriter __w, Control parameterContainer) in C:\Portal Websites\Portals\OrderEntry\UC3\Contact.aspx:line 9
   at System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter writer, ICollection children)
   at System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter writer, ICollection children)
   at System.Web.UI.HtmlControls.HtmlForm.RenderChildren(HtmlTextWriter writer)
   at System.Web.UI.HtmlControls.HtmlContainerControl.Render(HtmlTextWriter writer)
   at System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter writer, ICollection children)
   at System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter writer, ICollection children)
   at System.Web.UI.Page.Render(HtmlTextWriter writer)
   at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)

Any help with this would be greatly appreciate.

Added requested code:

Imports ComponentArt.Web.UI

Partial Class OrderEntry_UC3_Contact
Inherits Company.Pages.CompanyPage
Public Order As Company.Orders.UC3.Order

Protected Sub btnNext_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnNext.Click
    If Valid() Then
        SaveOrder() 'This is line 9
        Response.Redirect("Payment.aspx")
    End If
End Sub

I've added the top of the aspx page (The whole thing is too large).

<%@ Page Language="VB" MasterPageFile="~/Portal/PortalNoFooter.master" AutoEventWireup="false"
    EnableTheming="true" CodeFile="Contact.aspx.vb" Inherits="OrderEntry_UC3_Contact"
    Title="Contact" %>

<%@ Register TagPrefix="ComponentArt" Namespace="ComponentArt.Web.UI" Assembly="ComponentArt.Web.UI" %>
<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" runat="Server">
      //To large to submit the whole thing
</asp:Content>
enter code here

回答1:


Your code examples don't show the Page_Load or the exact lines around line 9 of the aspx file, but it sounds like you are assuming that Order will be populated at all times. If you are only loading the Order object in Page_Load during a non-postback, when the user clicks the button, the Order object is not being loaded early enough in the page lifecycle.

Try removing the check for IsPostback and always reload the Order object from the Session.



来源:https://stackoverflow.com/questions/11980307/object-reference-not-set-to-instance-of-an-object-when-saving-to-session

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!