需要用户控制ViewState / State帮助

时间:2009-12-07 07:27:49

标签: asp.net vb.net user-controls asp-usercontrols

我需要帮助使这段代码更好用。目前,发生的事情是当它重新加载时,我松开了第三个值,即计算值。我想重新加载我的页面,而不会丢失页面上每个属性和每个用户控件实例的值。

提前致谢

  Private _Length As Double = 0.0
        Public Property Length() As Double
            Get
                If (Me.ViewState("calcLength") IsNot Nothing) Then
                    Return CType(ViewState("calcLength"), Double)
                End If
                Return _Length

            End Get
            Set(ByVal value As Double)
                ViewState("calcLength") = value
                txtLength.Text = value.ToString()
                _Length = value
            End Set
        End Property


     Private _Width As Double = 0.0
        Public Property Width() As Double
            Get
                If (Me.ViewState("calcwidth") IsNot Nothing) Then
                    Return CType(Me.ViewState("calcwidth"), Double)
                End If
                Return _Width
            End Get
            Set(ByVal value As Double)
                Me.ViewState("calcwidth") = value
                Me.txtwidth.Text = value.ToString()
                _Width = value
            End Set
        End Property


     Private _calculatedboardfeet As Double = 0.0
        Public Property CalculateBoardFeet() As Double
            Get
                If (Me.ViewState("calculateboardfeet") IsNot Nothing) Then
                    _calculatedboardfeet = CType(ViewState("calculateboardfeet"), Double)

                End If
                Return _calculatedboardfeet
            End Get
            Set(ByVal value As Double)
                Me.ViewState("calculateboardfeet") = value
                Me.lblCalculatedValue.Text = String.Format("{0:f2}", value)
                _calculatedboardfeet = value
            End Set
        End Property

3 个答案:

答案 0 :(得分:2)

我认为这部分没有意义,尽管这可能不是问题的原因。我还没有详细研究其余的代码。

ElseIf (Me.ViewState("txtwidth") Is Nothing) Then
      Return CType(Me.ViewState("txtwidth"), Double)

如果找不到ViewState项(即Is Nothing),您如何返回演员值? 3个属性的情况相同。

答案 1 :(得分:0)

“第三个值是计算值”是什么意思?第三,如CalculateBoardFeet()?

您在页面生命周期的哪个阶段调用这些属性?

为什么要将值存储在ViewState和控件的.​​Text属性中,然后再存储在类变量中?太。许多。副本。

如果以编程方式设置控件的.Text属性,则应该在回发时为您恢复该值,而无需您自己显式设置ViewState。

答案 2 :(得分:0)

原来我需要的是在Usercontrol的pre_Render事件中调用我的代码的赋值部分。它晚于Parent Page的PageLoad()事件,即所需的信息将在控件的viewstate中可用