0

注文を保存しようとするとき、まずセッションからオブジェクトをロードします。これは機能します。次に、注文に情報を追加して、セッションに戻します。次に、オブジェクト参照がオブジェクトのインスタンスに設定されていないというエラーが表示されます。

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

    'Add order information here

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

スタック トレースは次のとおりです。

    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)

これについて何か助けていただければ幸いです。

要求されたコードを追加しました:

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

aspxページの先頭を追加しました(全体が大きすぎます)。

<%@ 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
4

1 に答える 1

1

あなたのコード例Page_Loadでは、aspx ファイルの 9 行目の前後の正確な行は示されていませんOrderが、常に入力されると想定しているように聞こえます。ポストバック以外でのみOrderオブジェクトをロードしている場合、ユーザーがボタンをクリックしたときに、オブジェクトがページのライフサイクルの早い段階でロードされていません。Page_LoadOrder

チェックを外してIsPostback、常にOrderセッションからオブジェクトをリロードしてみてください。

于 2012-08-16T04:02:34.220 に答える