DataAnnotations范围在View number helper中

时间:2017-01-11 17:21:30

标签: javascript asp.net-mvc entity-framework razor data-annotations

我正在使用带有数据注释的实体框架,在我的模型(myModel.cs)中我有这个字段:

    [DisplayName("My object")]
    [Required]
    [Range(1, 10)]
    public Int16 myObject { get; set; }

在视图中我有这个剃刀助手:

@Html.EditorFor(model => model.myObject , new { htmlAttributes = new { @class = "form-control", type = "number",  placeholder = "Type the number of objects" } })

使用上面的代码,用户可以插入数字1000,只有在提交表单时才会返回验证错误 我想在我的视图中配置EditorFor Helper,以拒绝用户键入任何低于1或大于10的值的可能性:对于使用htmlAttributes中的min和max属性以及数据注释值的示例,但是如何使用这样做?

1 个答案:

答案 0 :(得分:0)

如果您想阻止用户在客户端输入一些值,您应该使用 javascript 。对于你的情况你可以这样写(用html的例子):



    document.getElementsByClassName('restrict-number-range')[0].oninput = function () {
        var max = parseInt(this.getAttribute('data-val-range-max'));
        if (parseInt(this.value) > max) {
            this.value = max;
            return; 
        }

        var min = parseInt(this.getAttribute('data-val-range-min'));
        if (parseInt(this.value) < min) {
            this.value = min;
            return; 
        }
    }
&#13;
<input type="myObject" class="restrict-number-range" data-val-range-max='10' data-val-range-min='1'/>
&#13;
&#13;
&#13;

我只是从Html帮助程序生成的data属性中获取信息。你的助手看起来像这样(不要忘记添加js):

@Html.EditorFor(model => model.myObject, 
               new { 
               htmlAttributes = new { 
                     @class = "form-control restrict-number-range", //check class
                     type = "number",  
                     placeholder = "Type the number of objects" 
                     }})