0

在我们有提交按钮的页面上,单击它时由于 m_strPageDefinition 具有空值而出现错误。以下是它的代码以获得更多洞察力。只有有时且仅在生产中我们才获得m_strPageDefinitionas的价值null,这会导致问题。有谁知道为什么m_strPageDefinition会来null

Private m_strPageDefinition As String

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

       If Not IsPostBack  Then
            If (Not Context.Items("MyXmlString") = Nothing) And (Not Context.Items("mFormID") = Nothing) Then
                MyXMLString = Context.Items("MyXmlString")
                MyHiddenXMLString.Value = MyXMLString
            End If
        Else
            m_strPageDefinition = MyHiddenXMLString.Value
        End If

End Sub

Private Property MyXMLString()
        Get
            Return m_strPageDefinition
        End Get
        Set(ByVal value)
            m_strPageDefinition = value
        End Set
End Property
4

2 回答 2

0

您应该考虑更一致地处理 m_strPageDefinition。为什么你访问的是私有变量而不是总是使用属性设置器?例如

Private m_strPageDefinition As String

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load


If Not IsPostBack  Then
    If (Not Context.Items("MyXmlString") = Nothing) And (Not Context.Items("mFormID") = Nothing) Then
        MyXMLString = Context.Items("MyXmlString")
        MyHiddenXMLString.Value = MyXMLString
    Else
        MyXMLString = MyHiddenXMLString.Value
    End If
Else
    MyXMLString = MyHiddenXMLString.Value
End If

End Sub

Private Property MyXMLString() 
    Get 
        Return m_strPageDefinition 
    End Get 
    Set(ByVal value)         
        m_strPageDefinition = value 
    End Set 
End Property

我相信您的问题来自我在 Not IsPostBack 声明中包含的缺少的“Else”。请原谅我,VB.NET 不是我编码的语言,所以格式/结构可能有点偏离。

于 2012-07-10T13:37:54.553 回答
0

我认为问题出在这里:

m_strPageDefinition = MyHiddenXMLString.Value

更具体地说:MyHiddenXMLString.Value可能为空。

我不知道您在哪里声明了 MyHiddenXMLString,但是如何在 aspx 端将其设为隐藏变量(输入类型 =“hidden”.. )并在页面第一次加载时设置它的值。

然后你知道价值将永远存在并且易于访问。

hth

于 2012-07-10T13:59:19.047 回答