gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 02:10:29 24 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/16872493/

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