asp.net-mvc-3 – 大于或等于今天日期验证注释在MVC3
发布时间:2020-05-23 17:09:53 所属栏目:asp.Net 来源:互联网
导读:有没有人看到一个MVC3数据注释的日期验证,需要一个选定的日期等于或大于当前日期? 如果已经有第三方添加了很酷。我已经在使用DataAnnotationsExtensions,但不提供我正在寻找的内容。 这似乎没有任何参考。所以,希望有人已经解决了这个问题,然后再尝试重
|
有没有人看到一个MVC3数据注释的日期验证,需要一个选定的日期等于或大于当前日期? 如果已经有第三方添加了很酷。我已经在使用DataAnnotationsExtensions,但不提供我正在寻找的内容。 这似乎没有任何参考。所以,希望有人已经解决了这个问题,然后再尝试重新创造轮子,并写下自己的定制验证器。 我已经尝试了Range,但需要2个日期,并且都必须是字符串格式的常量,例如[Range(typeof(DateTime),“1/1/2011”,“1/1/2016”)]帮助。而DataAnnotationsExtensions Min验证器只接受int和double 更新已解决 感谢@BuildStarted这是我结束了,它的工作伟大的服务器端,现在客户端与我的脚本 using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Web.Mvc;
namespace Web.Models.Validation {
[AttributeUsage(AttributeTargets.Field | AttributeTargets.Property,AllowMultiple = false,Inherited = true)]
public sealed class DateMustBeEqualOrGreaterThanCurrentDateValidation : ValidationAttribute,IClientValidatable {
private const string DefaultErrorMessage = "Date selected {0} must be on or after today";
public DateMustBeEqualOrGreaterThanCurrentDateValidation()
: base(DefaultErrorMessage) {
}
public override string FormatErrorMessage(string name) {
return string.Format(DefaultErrorMessage,name);
}
protected override ValidationResult IsValid(object value,ValidationContext validationContext) {
var dateEntered = (DateTime)value;
if (dateEntered < DateTime.Today) {
var message = FormatErrorMessage(dateEntered.ToShortDateString());
return new ValidationResult(message);
}
return null;
}
public IEnumerable<ModelClientValidationRule> GetClientValidationRules(ModelMetadata metadata,ControllerContext context) {
var rule = new ModelClientCustomDateValidationRule(FormatErrorMessage(metadata.DisplayName));
yield return rule;
}
}
public sealed class ModelClientCustomDateValidationRule : ModelClientValidationRule {
public ModelClientCustomDateValidationRule(string errorMessage) {
ErrorMessage = errorMessage;
ValidationType = "datemustbeequalorgreaterthancurrentdate";
}
}
}
在我的模特儿 [Required]
[DateMustBeEqualOrGreaterThanCurrentDate]
public DateTime SomeDate { get; set; }
客户端脚本 /// <reference path="jquery-1.7.2.js" />
jQuery.validator.addMethod("datemustbeequalorgreaterthancurrentdate",function (value,element,param) {
var someDate = $("#SomeDate").val();
var today;
var currentDate = new Date();
var year = currentDate.getYear();
var month = currentDate.getMonth() + 1; // added +1 because javascript counts month from 0
var day = currentDate.getDate();
var hours = currentDate.getHours();
var minutes = currentDate.getMinutes();
var seconds = currentDate.getSeconds();
today = month + '/' + day + '/' + year + ' ' + hours + '.' + minutes + '.' + seconds;
if (someDate < today) {
return false;
}
return true;
});
jQuery.validator.unobtrusive.adapters.addBool("datemustbeequalorgreaterthancurrentdate");
解决方法创建自定义属性。public class CheckDateRangeAttribute: ValidationAttribute {
protected override ValidationResult IsValid(object value,ValidationContext validationContext) {
DateTime dt = (DateTime)value;
if (dt >= DateTime.UtcNow) {
return ValidationResult.Success;
}
return new ValidationResult(ErrorMessage ?? "Make sure your date is >= than today");
}
}
代码被注销袖口,以便修复任何错误:) (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net – 使用ASP:文本框作为
- ASP.NET批量下载文件的方法
- asp.net-mvc – 将会话永久保持为stackoverflow
- asp.net – 增加会话TimeOut
- 如何在ASP.NET表中创建thead和tbody?
- .net – VS2017 15.3解决方案文件中的新GlobalSection是什么
- asp.net-mvc – RouteCollection.Ignore和RouteCollection.
- asp.net – Reflection构成了什么风险? (中等信任)
- asp.net-mvc – ASP.NET MVC 3 Beta 1 Block访问Razor视图
- asp.net-mvc – 基本MVC:“modelItem =”做什么?
