ASP.NET MVC 2.0 Неиспользуемая модель Свойство вызывается при публикации продукта на сервере? - PullRequest
1 голос
/ 04 мая 2010

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

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

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

для интересующихся, вот весь код ...

Частичный публичный класс tProduct Наследует тПродукт Private Const CommissionMultiplier As Decimal = CDec (1.18) Частная _FinalPrice как десятичная дробь? Частная _DisplayFinalPrice As String Частная _DisplayNormalPrice As String

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)

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

1 Ответ

2 голосов
/ 05 мая 2010

Похоже, что у вас возникла эта проблема (может быть, такая же проблема?):

Почему ASP.NET MVC заботится о моих свойствах только для чтения во время привязки данных?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...