gpt4 book ai didi

asp.net-mvc - 在 asp.net MVC 非侵入式验证中验证仅时间输入

转载 作者:行者123 更新时间:2023-12-05 07:42:54 25 4
gpt4 key购买 nike

我在页面上有两个单独的字段:一个用于日期,一个用于时间。

这是模型:

[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; }

这是 View :

@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" })

javascript 非侵入式验证在 Date 字段中工作正常,但是当我在 StartTime 中输入“11:00 PM”或“11:00 pm”时,验证显示

"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

下面是您应该绑定(bind)的内容。

型号:

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)

关于asp.net-mvc - 在 asp.net MVC 非侵入式验证中验证仅时间输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44125884/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com