asp.net-mvc – ASP.Net MVC不显眼的日期范围验证
发布时间:2020-12-16 03:23:15  所属栏目:asp.Net  来源:网络整理 
            导读:我有一个包含两个日期字段的表单,开始日期和结束日期.我想验证这两个字段以确保开始日期在结束日期之前或之前.我编写了一个远程验证器并将其分配给两个字段,但这可能会导致同一错误的多条消息.此外,如果我更正了一个日期,则验证不会在未修改的字段上触发,而
                
                
                
            | 
 我有一个包含两个日期字段的表单,开始日期和结束日期.我想验证这两个字段以确保开始日期在结束日期之前或之前.我编写了一个远程验证器并将其分配给两个字段,但这可能会导致同一错误的多条消息.此外,如果我更正了一个日期,则验证不会在未修改的字段上触发,而不会显示旧的错误消息 
  
  如何验证两个日期字段,以验证开始日期是在结束日期之前还是结束日期? 解决方法
 几个星期前我遇到了同样的问题.恕我直言我认为解决问题的最佳方法是使用 
 jquery实现客户端控制. 
  通过这种方式,您可以在每次更改StartDate或EndDate上的值时调用验证.在这种情况下,最好调用服务器来验证客户端上的数据,因为您没有调用服务器. 在以下链接中,有一个实现客户端验证的过程. 这是我的解决方案: 步骤1:创建属性类以验证连续日期 public class ConsecutiveDateAttribute : ValidationAttribute,IClientValidatable
{
    public ConsecutiveDateAttribute()
    {
        ErrorMessage = "The date must be consecutive";
    }
    public override bool IsValid(object value)
    {
        return true;
    }
    public IEnumerable<ModelClientValidationRule> GetClientValidationRules(ModelMetadata metadata,ControllerContext context)
    {
        var rule = new ModelClientValidationRule();
        rule.ErrorMessage = FormatErrorMessage(metadata.GetDisplayName());
        rule.ValidationParameters.Add("datefield",metadata.PropertyName);
        rule.ValidationType = "consecutivedate";
        yield return rule;
    }
}IsValid方法总是返回true,因为我想验证客户端的值. 第2步:使用属性ConsecutiveDate装饰我想要验证的字段 [Required(),DataType(DataType.Date),ConsecutiveDate()]
    public DateTime StartDate { get; set; }
    [Required(),ConsecutiveDate()]
    public DateTime EndDate { get; set; }第3步:在页面中实现javascript以验证日期 <script src="@Url.Content("~/Scripts/jquery-1.10.2.js")" type="text/javascript" />
<script src="@Url.Content("~/Scripts/jquery.validate.js")" type="text/javascript" />
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.js")" type="text/javascript"></script>
<script type="text/javascript">
    if ($.validator && $.validator.unobtrusive) {
        $.validator.unobtrusive.adapters.addSingleVal("consecutivedate","datefield");
        $.validator.addMethod("consecutivedate",function(value,element) {
            if ($("#StartDate").val() != "" && $("#EndDate").val() != "")
                return $("#StartDate").val() <= $("#EndDate").val();
            // IF both values are not polupated I don't want to validate the field
            return true;
        });
    }
</script>$.validator.addMethod(“consecutivedate”,element):这会为我要验证的每个字段注册验证. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! | 
相关内容
- asp.net-core – 在ASP.NET vNext过滤器中获取注入对象
- asp.net – 使用ASP MVC 3 RC和.NET 4中的Request.Unvalida
- asp.net-mvc – 从页面到局部视图的asp.net mvc参数
- asp.net-mvc – 在服务器上安装ASP.NET MVC 4
- webforms – ASP.Net Core 1.0是否支持WebForm项目
- ASP.NET MVC SEO URL
- asp.net-mvc – 接受逗号和点作为小数分隔符
- asp.net-mvc – 失败的ASP.NET MVC路由.这是一个错误还是角
- asp.net-mvc-3 – 是否可能获得一个ASP.NET MVC 3项目工作在
- asp.net-mvc – 为什么我在MVC3控制器中的模型中更新的值没
推荐文章
            站长推荐
            - asp.net-mvc – 从IIS重写http到https的URL重写不
- asp.net – RazorViewEngine.FindView无法找到预
- asp.net – 如何使用ReportService2010命名空间呈
- asp.net-mvc – ASP.Net MVC:控制器中的访问验证
- asp.net-mvc-3 – Glimpse.axd 403ing在IIS上
- asp.net-core – 在将Swashbuckle用于网络核心we
- asp.net – 未捕获TypeError:无法读取未定义的属
- ASP.Net / C#:替换数据绑定字段中的字符
- asp.net – Web API的XML帮助文档未在发布时更新
- 发布ASP.net无法看到程序集
热点阅读
            