gpt4 book ai didi

asp.net-mvc-3 - MVC3 属性验证问题

转载 作者:行者123 更新时间:2023-12-01 01:29:05 25 4
gpt4 key购买 nike

在我看来,我的验证出现了奇怪的行为。

我的模型有这个属性。

    [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; }

我的观点是这样的:

<tr>
<td>@Html.LabelFor(m=> m.OverFlowCapacity)</td>
<td>@Html.EditorFor(m=>m.OverFlowCapacity)</td>
<td> @Html.ValidationMessageFor(model => model.OverFlowCapacity)</td>
</tr>

如果我输入像“ABC”这样的值,我会收到验证消息“需要数字”如果我输入值 999999,我会收到验证消息“值必须介于 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; }

允许空值并消除提交后验证错误:

[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; }

关于asp.net-mvc-3 - MVC3 属性验证问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6852574/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com