用于确定数据范围的数据注释验证不起作用

时间:2014-10-23 17:20:10

标签: asp.net-mvc database entity-framework data-annotations database-migration

我想将数据库中列的值限制为数据范围。

在这种特殊情况下,我希望Size列限制1到4之间的整数。

我已经使用[Range(1, 4)]来创建此目标。已创建了列,但可以获取任何范围的整数值! 关于客户端验证,我可以输入任何整数值范围!

我该如何解决这个问题?

我已经使用ASP.NET MVC 5,Entity Framework 6.x,Sql Server 2008R2和Code-First来创建数据库。

如果有必要,可以通过db-migration使用您的解决方案。

我的模特:

public class Tag : Entity, ITag
{
    [Range(1, 4)]
    public virtual int Size { get; set; }

    [Required]
    [StringLength(25)]
    public virtual string Title { get; set; }

    [StringLength(256)]
    public virtual string Description { get; set; }

    public virtual bool IsActive { get; set; }

    public virtual ISet<ArticleTag> ArticleTags { get; set; }

    public virtual ISet<ProjectTag> ProjectTags { get; set; }
}

我的观点的一部分:

<div class="form-group">
        @Html.LabelFor(model => model.Size, htmlAttributes: new { @class = "control-label col-md-2" })
        <div class="col-md-10">
            @Html.EditorFor(model => model.Size)
            @Html.ValidationMessageFor(model => model.Size)
        </div>
    </div>

1 个答案:

答案 0 :(得分:1)

这是一个已知问题,显然jquery-validation版本存在问题,因此您可以尝试使用以下版本:

Microsoft jQuery Unobtrusive Validation (at least 2.0.30116.0)
Microsoft jQuery Unobtrusive Ajax (at least 2.0.30116.0)
jQuery Validation 1.11.1

你可以在这里找到类似的问题: client-side validation trips on DataAnnotation Range attribute

另有关于此的报告: https://github.com/jzaefferer/jquery-validation/issues/626