ASP.NET MVC 2.0 Неиспользованное Свойство Модели, называемое при регистрации продукта на сервер?

у меня есть свой автоматически сгенерированный linq к sql классам, и я расширяю этот класс с помощью частичной классификации (вместо того, чтобы использовать наследование), и у меня есть свойства что, что я вставил позже, которые не являются частью модели базы данных и не должны быть. это вещи как "FinalPrice" и "DisplayFinalPrice" - в dbase, существует только RetailPrice и WholesalePrice, таким образом, FinalPrice и т.д. больше похожи на расширения dbase полей.

когда я отправляю форму ни с чем заполненным, "FinalPrice" называют ('получение' свойства) даже tho, я никогда не прошу его быть, и даже tho это не нужно. это происходит перед проверкой, таким образом, я даже не получаю ошибки проверки, я добрался бы.

я попытался использовать и на свойствах FinalPrice и FinalPriceDisplay - никакие не идут! почему это происходит и как я могу мешать ему произойти? modelstate просто пытается проверить все поэтому, что он называет каждый объект независимо от того, что?

для заинтересованных, вот весь код...

Частичный Общедоступный Класс tProduct 'Наследовал tProduct Частную Константу CommissionMultiplier, Столь же Десятичный = CDec (1.18) Частный _FinalPrice Как Десятичное число? Частный _DisplayFinalPrice Как Строка Частный _DisplayNormalPrice Как Строка

Public Property CategoryComplete As Short

<ScaffoldColumn(False)>
Public ReadOnly Property FinalPrice As Decimal
    Get
        'If RetailPrice IsNot Nothing OrElse WholesalePrice IsNot Nothing Then
        If _FinalPrice Is Nothing Then
            If RetailPrice IsNot Nothing Then
                _FinalPrice = RetailPrice
            Else
                _FinalPrice = WholesalePrice * CommissionMultiplier ' TODO: this should be rounded to the nearest 5th cent so prices don't look weird.
            End If

            Dim NormalPart = Decimal.Floor(_FinalPrice.Value)
            Dim DecimalPart = _FinalPrice.Value - NormalPart

            If DecimalPart = 0 OrElse DecimalPart = 0.5 Then
                Return _FinalPrice

            ElseIf DecimalPart > 0 AndAlso DecimalPart < 0.5 Then
                DecimalPart = 0.5   ' always rounded up to the nearest 50 cents.
            ElseIf DecimalPart > 0.5 AndAlso DecimalPart < 1 Then
                ' Only in this case round down if its about to be rounded up to a valeu like 20, 30 or 50 etc as we want most prices to end in 9.
                If NormalPart.ToString.LastChr.ToInt = 9 Then
                    DecimalPart = 0.5
                Else
                    DecimalPart = 1
                End If
            End If

            _FinalPrice = NormalPart + DecimalPart
        End If

        Return _FinalPrice
        'End If

    End Get
End Property

<ScaffoldColumn(False)>
Public ReadOnly Property DisplayFinalPrice As String
    Get

        If _DisplayFinalPrice.IsNullOrEmpty Then
            _DisplayFinalPrice = FormatCurrency(FinalPrice, 2, TriState.True)
        End If

        Return _DisplayFinalPrice
    End Get
End Property

Public ReadOnly Property DisplayNormalPrice As String
    Get
        If _DisplayNormalPrice.IsNullOrEmpty Then
            _DisplayNormalPrice = FormatCurrency(NormalPrice, 2, TriState.True)
        End If

        Return _DisplayNormalPrice

    End Get
End Property

Public ReadOnly Property DivID As String
    Get
            Return "pdiv" & ProductID
        End Get
    End Property


End Class

еще...

я арестован здесь, за исключением нулевой ссылки, говоря мне это должно содержать значение...

                Dim NormalPart = Decimal.Floor(_FinalPrice.Value)

я могу избавиться от проблемы, просто перенеся прокомментированный, если оператор в коде, но это нельзя назвать для начала, и это - проблема, я имею.

1
задан Erx_VB.NExT.Coder 4 May 2010 в 14:59
поделиться