【问题标题】:C# mvc 5 Data Annotation Restrict Numbers After Decimal point [duplicate]C# mvc 5数据注释限制小数点后的数字[重复]
【发布时间】:2016-04-26 12:19:54
【问题描述】:

我有类似的模型

public class Invoice
{
    int  Invoice Number{get;set;}

    [DisplayFormat(DataFormatString = "{0:n2}", ApplyFormatInEditMode = false)]
    public float ReceivedAmount { get; set; }
}

在视图页面中,ReceivedAmount 在点赞之后接受了许多数字 500.25251,但我想要 500.25

它应该防止在字段中输入值。不显示错误信息

提前致谢

【问题讨论】:

  • 你能和我确认一下吗?
  • 在我看来这可能最好通过 javascript 处理
  • @user1666620 举个例子

标签: c# asp.net-mvc data-annotations html-validation


【解决方案1】:

接受与[DisplayFormat()] 无关的输入,您仍然可以根据需要添加,但不是这样。你需要的是[RegularExpression()]

[RegularExpression(@"^\d+.\d{0,2}$",ErrorMessage = "Price can't have more than 2 decimal places")]
public float ReceivedAmount { get; set; }

RegularExpressionAttribute 类:指定 ASP.NET 动态数据中的数据字段值必须与指定的正则表达式匹配。 -msdn

【讨论】:

    【解决方案2】:

    使用以下代码:

       [DisplayFormat(DataFormatString="{0:#.##}")]
       public float ReceivedAmount { get; set; }
    

    【讨论】:

    • 反对者分享原因。此代码必须有效..
    • 问题是只允许输入最多 2 位小数。您的答案仅显示带有 2 位小数的输出。
    • 此属性适用于模型,无论是输入还是输出
    • 它不起作用,它允许输入许多数字
    【解决方案3】:
    [RegularExpression(@"^[0-9]+(\.[0-9]{1,2})?$",ErrorMessage = "The Price cannot exceed 2 decimal places. Please Re-enter")]
    public float ReceivedAmount { get; set; }
    

    【讨论】:

      猜你喜欢
      • 2014-12-21
      • 1970-01-01
      • 2010-10-22
      • 1970-01-01
      • 2018-12-29
      • 1970-01-01
      • 1970-01-01
      • 2018-01-05
      • 1970-01-01
      相关资源
      最近更新 更多