如何创建文本框仅需要小数的业务规则?

时间:2013-09-17 19:21:20

标签: .net vb.net business-rules csla

基本上,我有一个只需要十进制条目的文本框,但是只允许在此文本框中包含小数的验证规则。

这是我的代码,但它没有做我想要的:

#Region " RULE: Decimal Value Required Rule "

    Public Class DecimalRequiredRule
        Inherits Rules.BusinessRule

        Public Sub New(ByVal primaryProperty As Core.IPropertyInfo)
            InputProperties = New List(Of IPropertyInfo)({primaryProperty})
            Me.PrimaryProperty = primaryProperty
        End Sub

        Protected Overrides Sub Execute(ByVal context As Csla.Rules.RuleContext)
            Try
                Dim isDecimal As Decimal = CDec(context.InputPropertyValues(PrimaryProperty))
            Catch ex As Exception
                context.AddErrorResult(PrimaryProperty.FriendlyName & " must be a decimal")
            End Try
        End Sub
    End Class

#End Region

1 个答案:

答案 0 :(得分:0)

假设PrimaryPropertystring数据类型的支持。我做了这个假设,因为如果它是一个泛型支持的 Decimal / Float / Double 数据类型,那么数据类型就已经被解析了#34;来自文本框中的值。

作为一个字符串,您可以简单地检查是否存在小数点,这可以通过索引或尝试<<valueType>>..TryParse方法等各种方式完成,然后调用{适当时{1}}。

如果它实际上由 Decimal / Float / Double 支持,那么您需要使用简单的数学来检查该数字是否具有小数部分的非零值。执行此操作的各种方法是截断数字并比较截断的数字是否与原始数字相同,如果没有,则存在一小部分,甚至将其转换为具有足够大的整数部分的数据类型将其与原始版本进行比较。

希望有所帮助。