当MV值无效时,.NET MVC客户端validation不显示属性消息
我已经阅读了很多关于这个主题的post,但我仍然在与我的问题作斗争。 我有一个具有14个属性和5个复杂类型的表单,其中包含自定义模板编辑器。 客户端validation适用于所有属性和自定义模板编辑器,但下面的属性。 如果我输入文本,它将删除文本框的全部内容而不显示任何消息。 但是,如果我输入2.,我收到错误消息,说它必须是一个数字。 有没有人经历过这种行为? 这也发生在我的其他一些forms上。
作为旁注:客户端是否应该validation可空的int范围? 似乎它没有,除非我添加范围validation器。 谢谢。
更新这实际上发生在我的所有int? 性能
模型
[Display(Name = "Lifetime")] public int? Life { get; set; }
视图
@using (Html.BeginForm("EditPerson", "Maintenance", FormMethod.Post, new { @class = "operation-form" })) { @Html.AntiForgeryToken() @Html.HiddenFor(model => model.PersonId) @Html.Hidden("ModifiedBy", User.Identity.Name) @Html.ValidationSummary(false, "", new { @class = "text-danger" }) @Html.LabelFor(model => model.Life) @Html.EditorFor(model => model.Life, new { htmlAttributes = new { @class = "to-center routebox" } }) @Html.ValidationMessageFor(model => model.Life, "", new { @class = "text-danger" }) } @section Scripts { @Scripts.Render("~/bundles/jqueryval")
如果您使用现代浏览器,问题可能是使用@Html.EditorFor()
默认情况下,这会将type="number"
添加到输入中,因此将生成数字控件的浏览器实现。 我只使用Chrome对此进行了测试,但是如果您输入的文本不是有效数字,则浏览器会拦截它并阻止设置value
属性。 现在,当您回发时, Life
为null,因此有效,当您返回视图时, ModelState
值为null,解释为什么它似乎“擦除文本框的整个内容而没有消息” 。
您可以通过将其更改为@Html.TextBoxFor(m => m.Life)
来测试它,这将呈现type="text"
。 现在,当您输入文本并尝试提交时,不显眼的validation将阻止提交并显示“字段生活必须是数字” 。 至于validation范围,如果你没有为属性添加适当的属性(例如[Range(0, int.MaxValue)]
)那么jquery.validate.unobtrusive
没有任何jquery.validate.unobtrusive
可以测试,所以它回发了,但是它的validation在服务器上,当您返回视图时,将显示validation错误,如“值’999999999999999999999999999999999999999999’无效” 。
有一次我发现了那个int? 是问题,我在这里找到了一个解决方案:
Nullable int validation不显示非数字值的消息
我所做的只是将数据类型注释添加到所有int?
。 不知道为什么这个有效。
[Display(Name = "Lifetime")] [DataType(DataType.Text)] public int? Life { get; set; }
有这样的选择:
上述就是C#学习教程:当MV值无效时,.NET MVC客户端validation不显示属性消息分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
- 使用
[Range(0, int.MaxValue)]
- 使用
[RegularExpression("([0-9]+)")]
- 使用DataAnnotationExtensions中的
[Integer]
- 使用您自己的自定义
ValidationAttribute
并在客户端注册
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/991665.html