【发布时间】:2023-03-16 02:06:01
【问题描述】:
我必须使用以下格式MM/yyyy 捕获DateTime。我的视图模型看起来像这样
public class SomeViewModel
{
public string Name { get; set; }
[DataType(DataType.Date), DisplayFormat(DataFormatString = "{0:MM/yyyy}", ApplyFormatInEditMode = true)]
public DateTime? TargetMonth { get; set; }
}
然后我有名为Date.cshtml 的剃须刀编辑器模板,代码如下
@model DateTime?
@Html.TextBox("", ViewData.TemplateInfo.FormattedModelValue, new { @class = "form-control", placeholder = ViewData.ModelMetadata.Watermark })
当我像 07/2018 这样选择/键入值时,我在客户端验证期间收到以下错误
目标月份字段必须是日期。
如何使用MM/yyyy 格式正确捕获月份?
【问题讨论】:
-
将其设为月份(1 到 12)的下拉菜单,并将年份设为数字字段。我认为这是一个更好的 UI 设计。您也可以限制年份的最小值和最大值。如果您想要单个输入,请使用带掩码的输入框并制作属性字符串。或者制作属性字符串并将正则表达式应用于它以进行验证。
标签: c# asp.net-mvc razor