如何实现ASP.NET MVC3模型验证中,使用DataAnnotations进行客户端验证,确保一个属性小于或等于另一个属性的功能?

2026-03-30 12:521阅读0评论SEO基础
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计358个文字,预计阅读时间需要2分钟。

如何实现ASP.NET MVC3模型验证中,使用DataAnnotations进行客户端验证,确保一个属性小于或等于另一个属性的功能?

我有这样一个简单的模型,它使用ASP.NET MVC 3开发,具有不明显的客户端验证。这种模型看起来有点像这样(名称因保密而变更):

csharppublic class MyInputModel{ public MyInputModel() { }

public MyInputModel(MyViewData viewData) { Vi }}

我有一个简单的表单,它使用ASP.NET MVC 3不显眼的客户端验证.

该模型看起来有点像这样(名称因隐私而改变):

public class MyInputModel { public MyInputModel() { } public MyInputModel(MyViewData viewData) { ViewData = viewData; MaxValueForSize = viewData.MaxSize; } public int MaxValueForSize { get; set; } [RegularExpression("[1-9][0-9]*",ErrorMessage = "The value must be a whole number.")] public int Size { get; set; } [StringLength(255)] [Required] public string Description{ get; set; } }

在我看来,我为MaxValueForSize设置了一个隐藏字段,我想将输入的Size值与小于或等于MaxValueForSize属性进行比较.

我知道我可以通过覆盖验证属性来做这个服务器端,如下所示:

如何实现ASP.NET MVC3模型验证中,使用DataAnnotations进行客户端验证,确保一个属性小于或等于另一个属性的功能?

internal class SizeValidAttribute : ValidationAttribute { protected override ValidationResult IsValid(object value, ValidationContext validationContext) { if(value != null) { var model = (MyInputModel) validationContext.ObjectInstance; if ((int)value > model.MaxValueForSize) return new ValidationResult(ErrorMessage); } return base.IsValid(value, validationContext); } }

但是,我想(需要)对此属性进行客户端验证.与比较注释的工作方式类似.

有谁知道这样做的方法?我是否需要以某种方式扩展客户端验证?

谢谢你的帮助.

看看这篇文章.它解释了如何扩展ASP.NET MVC模型验证以支持跨字段验证:

扩展ASP.NET MVC的验证
blogs.msdn.com/b/mikeormond/archive/2010/10/05/extending-asp-net-mvc-s-validation.aspx

本文共计358个文字,预计阅读时间需要2分钟。

如何实现ASP.NET MVC3模型验证中,使用DataAnnotations进行客户端验证,确保一个属性小于或等于另一个属性的功能?

我有这样一个简单的模型,它使用ASP.NET MVC 3开发,具有不明显的客户端验证。这种模型看起来有点像这样(名称因保密而变更):

csharppublic class MyInputModel{ public MyInputModel() { }

public MyInputModel(MyViewData viewData) { Vi }}

我有一个简单的表单,它使用ASP.NET MVC 3不显眼的客户端验证.

该模型看起来有点像这样(名称因隐私而改变):

public class MyInputModel { public MyInputModel() { } public MyInputModel(MyViewData viewData) { ViewData = viewData; MaxValueForSize = viewData.MaxSize; } public int MaxValueForSize { get; set; } [RegularExpression("[1-9][0-9]*",ErrorMessage = "The value must be a whole number.")] public int Size { get; set; } [StringLength(255)] [Required] public string Description{ get; set; } }

在我看来,我为MaxValueForSize设置了一个隐藏字段,我想将输入的Size值与小于或等于MaxValueForSize属性进行比较.

我知道我可以通过覆盖验证属性来做这个服务器端,如下所示:

如何实现ASP.NET MVC3模型验证中,使用DataAnnotations进行客户端验证,确保一个属性小于或等于另一个属性的功能?

internal class SizeValidAttribute : ValidationAttribute { protected override ValidationResult IsValid(object value, ValidationContext validationContext) { if(value != null) { var model = (MyInputModel) validationContext.ObjectInstance; if ((int)value > model.MaxValueForSize) return new ValidationResult(ErrorMessage); } return base.IsValid(value, validationContext); } }

但是,我想(需要)对此属性进行客户端验证.与比较注释的工作方式类似.

有谁知道这样做的方法?我是否需要以某种方式扩展客户端验证?

谢谢你的帮助.

看看这篇文章.它解释了如何扩展ASP.NET MVC模型验证以支持跨字段验证:

扩展ASP.NET MVC的验证
blogs.msdn.com/b/mikeormond/archive/2010/10/05/extending-asp-net-mvc-s-validation.aspx