asp.net-mvc – 验证asp.net MVC中的只读输入不显眼的验证

前端之家收集整理的这篇文章主要介绍了asp.net-mvc – 验证asp.net MVC中的只读输入不显眼的验证前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我在页面上有两个单独的字段:一个日期和一个时间.

这是模型:

[required]
[DisplayFormat(ApplyFormatInEditMode = true,DataFormatString = "{0:hh:mm tt}")]
public DateTime? StartTime { get; set; }

[required]
[DisplayFormat(ApplyFormatInEditMode = true,DataFormatString = "{0:MM/dd/yyyy}")]
public DateTime Date { get; set; }

这是视图:

@Html.TextBoxFor(m => m.Date,"{0:MM/dd/yyyy}",new { type = "text" })
@Html.TextBoxFor(m => m.StartTime,"{0:hh:mm tt}",new { type = "text",id = "timeStart" })

但是,当我在StartTime中输入“11:00 PM”或“11:00 pm”时,该JavaScript不显眼的验证可以正常使用Date字段,验证显示

“The field StartTime must be a date”

服务器端验证工作正常,“0:hh:mm tt”只有javascript有问题.现在我只是禁用JavaScript验证,但最终会在此页面

这可以为“时间”领域做好吗?

解决方法

老实说,实现这一点的最简单的方法是使用正则表达式验证器.这是一个例子.
[RegularExpression(@"^(0[1-9]|1[0-2]):[0-5][0-9] (am|pm|AM|PM)$",ErrorMessage = "Invalid Time.")]

不引人注意的验证应该与此表达式正常工作.

希望这可以帮助你!

编辑

我修正了由于某些非法字符而在控制台中引发错误的正则表达式.此外,您将需要此属性的字符串属性包装器,否则它将始终寻找有效的DateTime.

以下是您应该绑定的内容.

模型:

public DateTime? StartTime { get; set; }

[required]
[RegularExpression(@"^(0[1-9]|1[0-2]):[0-5][0-9] (am|pm|AM|PM)$",ErrorMessage = "Invalid Time.")]
public string StartTimeValue
{
    get
    {
        return StartTime.HasValue ? StartTime.Value.ToString("hh:mm tt") : string.Empty;
    }

    set
    {
        StartTime = DateTime.Parse(value);
    }
}

视图:

@Html.TextBoxFor(m => m.StartTimeValue)
原文链接:https://www.f2er.com/aspnet/249726.html

猜你在找的asp.Net相关文章