此代码无效,任何人都可以帮助我吗?
型号:
[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”中的消息。
感谢。
答案 0 :(得分:1)
我很确定你将要做的事情更多的是这些:
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
。