我已经查看了堆栈溢出,试图找到解决方案,但没有运气,所以为什么我导致提出问题..
我的表单上有一个字段,价格,十进制类型,这是可选的,具体取决于他们从下拉列表中选择的内容,所以我不能使用[必需]属性。
当提交表单时,如果他们从下拉列表中选择了一个值,要求用户输入邮资价格,那么我需要检查此字段以确保其有效小数,这样做我有以下内容
public static bool IsValid(decimal postagePrice)
{
var regex = new Regex(@"^\d+.\d{0,2}$");
return regex.IsMatch(postagePrice);
}
但它抱怨并说“参数类型字符串的参数类型十进制不可分配”我理解,我也不能使用Decimal.TryParse,因为它需要一个字符串。
如何解决此(我无法将类型从十进制更改为字符串)
答案 0 :(得分:3)
如果您只想验证该值最多有两个小数位,则可以使用模数:
public static bool IsValid(decimal postagePrice)
{
return postagePrice % 0.01m == 0m;
}
答案 1 :(得分:1)
Regular expressions处理字符串 - 就这么简单。
因此,在使用正则表达式对其进行验证之前,您需要以某种方式将小数转换为字符串。