数据类型.货币不显眼的验证不起作用

本文关键字:验证 不起作用 不显眼 货币 数据类型 | 更新日期: 2023-09-27 17:50:57

这个代码不工作,有人可以帮助我吗?

模型:

    [Display(ResourceType = typeof(HeelpResources), Name = "AdViewModel_Price_Label")]
    [Required(ErrorMessageResourceName = "ErrorMsgRequiredField", ErrorMessageResourceType = typeof(HeelpResources))]
    [DataType(DataType.Currency, ErrorMessageResourceName = "ErrorMsgPriceFormat", ErrorMessageResourceType = typeof(HeelpResources))]
    public decimal Price { get; set; }

在客户端生成:

data-val-number="The field Preço: must be a number".

而不是应该在资源"ErrorMsgPriceFormat"中的消息

谢谢。

数据类型.货币不显眼的验证不起作用

我很确定你要做的是这样做:

public string FormattedPrice { get; set; }

用您提供的RegEx来修饰它,以确保它们输入有效的货币值,并将input绑定到该字段。

当你进入你的行动时,你会想要对Decimal.TryParse做这样的事情:

decimal result;
var success = decimal.TryParse(o.FormattedPrice, NumberStyles.AllowDecimalPoint, CultureInfo.DefaultThreadCurrentCulture, out result);

,其中o是发布到动作的模型实例。此外,由于您的文化,NumberStyles.AllowDecimalPoint应该像在您的示例中一样转换为,。我知道这有点落后,但是这样想,在美国,小数分隔符是.,所以在您的文化中,相同的枚举值转换为,

如果解析成功,那么success将为真,您可以将result设置为o.Price