使用数据注释限制用户输入

时间:2013-12-28 17:15:07

标签: asp.net-mvc data-annotations

我在视图模型上有一个属性是数字类型;

[Display(Name="Year Began")]
public short? YearBegan { get; set; }

然而,使用此功能,用户仍然可以输入非数字值(即“asdf”)。这确实进行了验证并告诉用户模糊输入的值必须是数字 - 但我想阻止用户首先输入无效值(类似于输入掩码)。

有没有办法限制输入以防止用户仅使用DataAnnotations属性输入无效(在这种情况下,任何不是数字)?

1 个答案:

答案 0 :(得分:0)

  

但我想阻止用户输入无效值   第一名(像输入掩码)。

仅在服务器上无法实现。你将不得不求助于javascript。

所以你可以使用几个插件。例如jQuery numeric plugin。如果你不想依赖外部插件,你可以随时推出自己的实现,如this article所示:

$(document).ready(function() {
    $("#txtboxToFilter").keydown(function(event) {
        // Allow only backspace and delete
        if ( event.keyCode == 46 || event.keyCode == 8 ) {
            // let it happen, don't do anything
        } else {
            // Ensure that it is a number and stop the keypress
            if (event.keyCode < 48 || event.keyCode > 57 ) {
                event.preventDefault(); 
            }
        }
    });
});

您当然可以使其更通用,并将class="numeric"应用于仅允许整数的所有输入字段,然后调整您的选择器:$(".numeric").keydown(function(event) { ... });