加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

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

发布时间:2020-12-15 22:54:09 所属栏目:asp.Net 来源:网络整理
导读:我在页面上有两个单独的字段:一个日期和一个时间. 这是模型: [Required][DisplayFormat(ApplyFormatInEditMode = true,DataFormatString = "{0:hh:mm tt}")]public DateTime? StartTime { get; set; }[Required][DisplayFormat(ApplyFormatInEditMode = tr
我在页面上有两个单独的字段:一个日期和一个时间.

这是模型:

[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)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读