用于DataAnnotationvalidation属性的Int或Number DataType

在我的MVC3项目中,我存储了足球/足球/曲棍球/ …运动游戏的分数预测。 所以我的预测课程的一个属性如下所示:

[Range(0, 15, ErrorMessage = "Can only be between 0 .. 15")] [StringLength(2, ErrorMessage = "Max 2 digits")] [Remote("PredictionOK", "Predict", ErrorMessage = "Prediction can only be a number in range 0 .. 15")] public int? HomeTeamPrediction { get; set; } 

现在,我还需要更改数据types的错误消息,在我的情况下, int 。 有一些默认使用 – “HomeTeamPrediction必须是一个数字”。 需要find一种方法来改变这个错误信息。 这个validation消息似乎也要预测远程validation。

我试过[DataType]属性,但这似乎不是在system.componentmodel.dataannotations.datatype枚举中的普通数字。

对于任何数字validation,您必须根据您的要求使用不同的范围validation:

整数

 [Range(0, int.MaxValue, ErrorMessage = "Please enter valid integer Number")] 

为浮动

 [Range(0, float.MaxValue, ErrorMessage = "Please enter valid float Number")] 

双倍

 [Range(0, double.MaxValue, ErrorMessage = "Please enter valid doubleNumber")] 

尝试正则expression式

 [RegularExpression("([0-9]+)")] // for 0-inf or [RegularExpression("([1-9][0-9]*)")] // for 1-inf 

希望它有助于:D

在数据注释中使用正则expression式

 [RegularExpression("([0-9]+)", ErrorMessage = "Please enter valid Number")] public int MaxJsonLength { get; set; } 

试试这个属性:

 public class NumericAttribute : ValidationAttribute, IClientValidatable { public override bool IsValid(object value) { return value.ToString().All(c => (c >= '0' && c <= '9') || c == '-' || c == ' '); } public IEnumerable<ModelClientValidationRule> GetClientValidationRules(ModelMetadata metadata, ControllerContext context) { var rule = new ModelClientValidationRule { ErrorMessage = FormatErrorMessage(metadata.DisplayName), ValidationType = "numeric" }; yield return rule; } } 

而且你还必须在validator插件中注册属性:

 if($.validator){ $.validator.unobtrusive.adapters.add( 'numeric', [], function (options) { options.rules['numeric'] = options.params; options.messages['numeric'] = options.message; } ); } 
 public class IsNumericAttribute : ValidationAttribute { protected override ValidationResult IsValid(object value, ValidationContext validationContext) { if (value != null) { decimal val; var isNumeric = decimal.TryParse(value.ToString(), out val); if (!isNumeric) { return new ValidationResult("Must be numeric"); } } return ValidationResult.Success; } }