Context.Item值为null

时间:2012-07-10 13:22:15

标签: asp.net vb.net null

在页面上我们有提交按钮,点击它时我们收到错误,因为m_strPageDefinition具有空值。以下是它的代码,以获得更多洞察力。只有在生产中,我们才会将m_strPageDefinition的值视为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

2 个答案:

答案 0 :(得分:0)

您应该考虑更加一致地解决m_strPageDefinition问题。您为什么访问是私有变量而不是始终使用Property setter?例如

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不是我编写的语言,因此格式/结构可能会有所不同。

答案 1 :(得分:0)

我认为问题在于:

m_strPageDefinition = MyHiddenXMLString.Value

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

我无法弄清楚你在哪里声明MyHiddenXMLString,但是如何在aspx端将其设为隐藏变量(输入类型=“隐藏”..)并在第一次加载页面时设置它的值。

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

HTH