ASP.NET数据注释验证 - 隐藏低级验证失败?

时间:2016-08-07 22:32:58

标签: asp.net validation data-annotations

我有一个模型,我正在使用数据注释进行验证,如下所示:

public int Id { get; set; }

[Required(ErrorMessage = "Please enter the Sample Description.")]
public string Description { get; set; }

[Required(ErrorMessage = "Please enter the Start Date.")]
[DataType(DataType.Date)]
public DateTime StartDate { get; set; }

数据通过API插入,如果验证失败,我想收到任何返回的错误消息,并将它们直接放到屏幕上。

这对于这样的事情很好:

[Required(ErrorMessage = "Please enter the Sample Description.")]
public string Description { get; set; }

但是在显示的整数属性,“Id”和客户端发送的情况下,一个不能强制转换为整数的值,例如“x”,那么你会得到一个像这样的低级别消息:

"Could not convert string to integer: x. Path 'Id', line 1, position 9.

我真正想要的是一条更像是

的信息
"Please provide an integer for the Id".

无论如何,是否允许通过注释进行数据验证,并且仍然提供比我得到的更有用的消息?

1 个答案:

答案 0 :(得分:0)

几种可能的选择:

<强>(1) 在MVC 4中,您可以使用Html.ValidationMessageFor.赞:

更改视图中的错误消息
@Html.ValidationMessageFor(model => model.YourIntField, "Please provide an integer for the Id".)

模特:

[DataType(DataType.Int)] public int YourIntField { get; set; }

<强>(2) 对于任何数字验证,您必须根据您的要求使用不同的范围验证

For Integer

[Range(0, int.MaxValue, ErrorMessage = "Please enter valid integer Number")]

For Float:

[Range(0, float.MaxValue, ErrorMessage = "Please enter valid float Number")]

参考:Int or Number DataType for DataAnnotation validation attribute