基本上,我有一个只需要十进制条目的文本框,但是只允许在此文本框中包含小数的验证规则。
这是我的代码,但它没有做我想要的:
#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
答案 0 :(得分:0)
假设PrimaryProperty
是string
数据类型的支持。我做了这个假设,因为如果它是一个泛型支持的 Decimal / Float / Double 数据类型,那么数据类型就已经被解析了#34;来自文本框中的值。
作为一个字符串,您可以简单地检查是否存在小数点,这可以通过索引或尝试<<valueType>>..TryParse
方法等各种方式完成,然后调用{适当时{1}}。
如果它实际上由 Decimal / Float / Double 支持,那么您需要使用简单的数学来检查该数字是否具有小数部分的非零值。执行此操作的各种方法是截断数字并比较截断的数字是否与原始数字相同,如果没有,则存在一小部分,甚至将其转换为具有足够大的整数部分的数据类型将其与原始版本进行比较。
希望有所帮助。