Jef*_*ddy 2 validation data-annotations asp.net-mvc-3
在我看来,我的验证变得很奇怪.
我的模特有这个属性.
[Display(Name = "Overflow Capacity")]
[RegularExpression(@"[-+]?[0-9]*\.?[0-9]?[0-9]", ErrorMessage = "Number required.")]
[Range(0,9999.99,ErrorMessage = "Value must be between 0 - 9,999.99")]
public decimal OverFlowCapacity { get; set; }
Run Code Online (Sandbox Code Playgroud)
我的观点是这样的:
<tr>
<td>@Html.LabelFor(m=> m.OverFlowCapacity)</td>
<td>@Html.EditorFor(m=>m.OverFlowCapacity)</td>
<td> @Html.ValidationMessageFor(model => model.OverFlowCapacity)</td>
</tr>
Run Code Online (Sandbox Code Playgroud)
如果我输入类似'ABC'的值,我会收到验证消息'Number required'如果我输入值999999,我会收到验证消息'Value必须介于0 - 9,999.99'之间
当我按预期关闭文本框时,会收到这两条消息.当我将文本框值保留为空并关闭时,我没有按预期得到任何错误.
但是,当我提交时,我收到验证消息"需要溢出容量字段".
我不知道这是从哪里来的.我已尝试从模型中删除所有验证属性,但仍然会收到"必需"消息.我不知所措.
这是我引用的脚本.
我还有mvcfoolproof的其他问题,我可以稍后发布.我想知道这是不是以某种方式对我的问题负责.
现在发生的事情是,在提交表单并确定decimal值不可能之后,后验证正在进行null.现在你使用的decimal是一个不可为空的类型.如果您想要此行为并且希望在提交表单之前看到验证,则将该[Required]属性添加到该属性.但是,如果您不希望使用此功能,则可以null将类型更改decimal为decimal?或Nullable<decimal>.
不允许空值并进行预提交验证:
[Display(Name = "Overflow Capacity")]
[RegularExpression(@"[-+]?[0-9]*\.?[0-9]?[0-9]", ErrorMessage = "Number required.")]
[Range(0,9999.99,ErrorMessage = "Value must be between 0 - 9,999.99")]
[Required]
public decimal OverFlowCapacity { get; set; }
Run Code Online (Sandbox Code Playgroud)
允许空值并删除提交后验证错误:
[Display(Name = "Overflow Capacity")]
[RegularExpression(@"[-+]?[0-9]*\.?[0-9]?[0-9]", ErrorMessage = "Number required.")]
[Range(0,9999.99,ErrorMessage = "Value must be between 0 - 9,999.99")]
public decimal? OverFlowCapacity { get; set; }
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11106 次 |
| 最近记录: |