【问题标题】:User Control ViewState/State Help needed需要用户控件 ViewState/State 帮助
【发布时间】:2009-12-07 07:27:49
【问题描述】:

我需要帮助以使此代码更好地工作。目前,当它重新加载时,我会丢失第三个值,即计算值。我希望我的页面在不丢失页面上每个属性和每个用户控件实例的值的情况下重新加载。

提前致谢

  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

【问题讨论】:

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


    【解决方案1】:

    这部分我“认为”没有意义,尽管它可能不是问题的原因。剩下的代码我还没有仔细研究过。

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

    如果找不到ViewState 项(即Is Nothing),如何返回转换后的值?这与 3 个属性相同。

    【讨论】:

    • 对此我深表歉意,我在发布的旧代码中进行了一些旧的编辑。我已经对其进行了修改。问题仍然存在。不知道我能做些什么来确保每当用户控件重新加载时,计算值都会重新计算或从视图状态重新加载,因为它应该为该特定控件。
    • 那么,您什么时候检索这些值?如果您在页面生命周期中过早检索它,则视图状态值可能不可用。
    • 在控件的页面加载触发后检索值。
    【解决方案2】:

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

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

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

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

    【讨论】:

    • 页面加载后正在检索这些值。我有所有三个选项以防万一,但似乎仍然没有为计算板英尺属性做伎俩。
    【解决方案3】:

    原来我需要的是在用户控件的 pre_Render 事件中调用我的代码的赋值部分。它晚于父页面的 PageLoad() 事件,此时所需的信息将在控件的视图状态中可用

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-01-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多