【问题标题】:Range data annotation is not working as expected, any idea?范围数据注释没有按预期工作,知道吗?
【发布时间】:2013-03-08 17:20:40
【问题描述】:

我假设验证检查将允许从 1 到 30 的任何输入值。但是,当我在此字段中输入 4 到 9 的值时,它会提示错误。有什么建议吗?请...

备注:我的项目基于“MVC4 Web Application + Razor View Engine + C# .net”。

using System.ComponentModel.DataAnnotations;

[Range(1, 30, ErrorMessageResourceType = typeof(Resources.ErrorMessage), ErrorMessageResourceName = "RangeErrorMsg")]
public int HowManyDays { get; set; }

以下是我的 Razor 视图源

<div class="editor-label">
    @Resources.Booking.Duration
</div>
<div class="editor-field">
    @Html.EditorFor(model => model.HowManyDays)
    @Html.ValidationMessageFor(model => model.HowManyDays)
</div>

我无法上传我的屏幕转储,因为我需要至少 10 个声望才能这样做。奇怪的是,它仅显示 4 到 9 范围内的值的警报。顺便说一句,我安装了“DataAnnotationsExtensions.MVC3”NuGet 包。但是,我确实尝试在没有运气的情况下取消它。

【问题讨论】:

  • 我刚刚在这里尝试过,它有效,尝试发布更多信息
  • 我添加了 Razor 视图的源代码。
  • 我找到了出现奇怪验证问题的根本原因。因为_Layout.cshtml中加载了一个JS库。
  • 简单提一下 [Range(1, 30)] 试试看
  • 正如我在上一个回复中提到的,一旦我删除了 JS 库“modernizr”,问题就得到了解决。

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


【解决方案1】:

EditorFor 中的第二个参数没有任何意义。 查看EditorFor help 或仅查看它在 SO(此站点)上的使用示例。 这可能会破坏您的观点,并且您没有得到验证。 首先,只需删除逗号和数字,看看是否有效,如果无效,请查找有关如何使用 EditorFor 的示例。

编辑

您的评论使我的回答完全无关紧要。您应该准确地说明您向公众展示的内容。 无论如何,尝试看看这个成功回答的问题是否解决了您的问题: Range DataAnnotation Doesn't Seem to Be Working

如果这有帮助,请告诉我。 谢谢。

【讨论】:

  • 我删除了逗号和数字。实际上,我最新的源代码副本没有逗号和数字。这正是我在前一阶段“试错”的方式。
  • 正如我在上一个回复中提到的,一旦我删除了 JS 库“modernizr”,问题就得到了解决。我发现奇怪的范围验证效果只发生在javascript检测层(http表单尚未POST)。
猜你喜欢
  • 1970-01-01
  • 2011-03-10
  • 2017-09-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-04
  • 2018-04-05
相关资源
最近更新 更多