【问题标题】:Property Value getting lost in ASP .Net财产价值在 ASP .Net 中丢失
【发布时间】:2014-12-05 00:05:46
【问题描述】:

我有以下填充设备对象的代码。当我调用 SubmitChanges 时,记录已成功添加到表中。但是,当我尝试将 EquipmentID 保存到属性设置中时,它会被重置为零。

    SaveProperties(Equipment)      'Save the properties to Equipment object
    dcVehicle.SubmitChanges()      ' Save to database

    EquipmentID = Equipment.EquipmentId      ' To update ViewState, etc.

    Session.Add("EquipmentID", Equipment.EquipmentId)

    'Add record to the Employee Assignment table (link to the Equipment table)
    Me.AddEquipmentEmployee(Equipment, CInt(Session("divid")))
    dcVehicle.SubmitChanges()

    'Add a status record for the piece of Equipment 
    Me.AddEquipmentStatus(Equipment, CInt(Session("divid")))
    dcVehicle.SubmitChanges()

在课堂上我有以下代码。当 _Equipment 设置为 Nothing 时,_EquipmentID 会从有效整数重置为零。有趣的方面是我有这个应用程序的另外两个部分(车辆和拖车)具有完全相同的代码(对象名称本身除外)。这两个其他组件按预期工作。当 EquipmentID 更改为零时,在添加好记录后,它最终会在 Equipment 表中创建一个 NULL 记录。第二个“SubmitChanges”调用将此 NULL 记录添加到 Equipment,并将该记录添加到 EquipmentAssignment 表中。

'**********************************************
'* Equipment Section                          *
'**********************************************

Private _Equipment As Equipment
Private _EquipmentID As Integer = 0

Public Property EquipmentID() As Integer
    Get
        Integer.TryParse(ViewState("EquipmentID"), _EquipmentID)
        Return _EquipmentID
    End Get
    Set(ByVal value As Integer)
        Me.ViewState("EquipmentId") = value
        _EquipmentID = value
        _Equipment = Nothing
    End Set
End Property

Public Property Equipment() As Equipment
    Get
        If _Equipment Is Nothing Then
            _Equipment = dcVehicle.GetEquipment(EquipmentID)
        End If
        Return _Equipment
    End Get
    Set(ByVal value As Equipment)
        _Equipment = value
        If value Is Nothing Then
            _EquipmentID = 0
            Me.ViewState("EquipmentID") = 0
        Else
            _EquipmentID = value.EquipmentId
            Me.ViewState("EquipmentID") = value.EquipmentId
        End If
    End Set
End Property

【问题讨论】:

  • 第二个代码 sn-p 第 7 行中的“EquipmentId”是否应该与其他代码的大小写不同?
  • 不,它不应该在不同的情况下。我还在学习 ASP .Net 并没有意识到 ViewState 是区分大小写的。我进行了更改,现在它正在工作。贾斯汀瑞恩,非常感谢你!!!

标签: asp.net .net vb.net class properties


【解决方案1】:

根据this Meta post,我将发表我的评论作为答案,因此您可以勾选您的问题已解决。

ViewState 区分大小写。第二个代码 sn-p 中的第 7 行,

    Me.ViewState("EquipmentId") = value

应改为:

    Me.ViewState("EquipmentID") = value

【讨论】:

  • 了解 ViewState 是区分大小写的,但为什么会得到我得到的结果?
  • 我阅读您的代码的方式,那是因为尽管您将正确的值设置为EquipmentId(小写),但当您将其检索为EquipmentID(大写)时,该状态不存在或不返回任何值,并且 TryParse 将其返回为零,或者默认为零,因为这就是您最初声明 _EquipmentID 的方式。
猜你喜欢
  • 2022-01-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-09
相关资源
最近更新 更多