@ Html.TextBoxFor验证

时间:2015-07-09 09:55:15

标签: html asp.net-mvc validation string.format html.textboxfor

我有像@Html.TextBoxFor这样的要求,以逗号分隔格式显示货币,不接受负值且没有特殊字符。在货币不可用的同时,我将此TextBoxFor的值更改为“不可用”。如何在视图中实现,使用十进制验证和支持文本输入?

@Html.TextBoxFor(m => m.SourceCurrencyValue, new { @Value=String.Format("{ViewBag.decimalplace}",Model.SourceCurrencyValue) })

ViewBag.decimalplace应该是小数位,如2或3。

1 个答案:

答案 0 :(得分:0)

您可以使用RegularExpression - 这个会将小数位数限制为2,但会相应更改。

[RegularExpression(@"^\d+,\d{0,2}$", 
     ErrorMessage = "Your error message")] 
public decimal SourceCurrencyValue { get; set; }

在看到您的评论澄清之后,您可以使用上述想法。 data元素在呈现时会在元素上创建数据属性,如果要在每个视图的基础上执行此操作,为什么不尝试手动设置这些属性:

@{ var regex = string.Format(@"^\d+,\d{{0,{0}}}$", ViewBag.DecimalPlaces); }
@Html.TextBoxFor(model => model.SourceCurrencyValue, 
    new { data_val_regex_pattern = regex, data_val_regex = "Error message" })

然后根据您传入的数量更改小数位数。