2

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

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

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

4

1 回答 1

1

您可以使用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" })

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

于 2015-07-09T10:05:19.093 回答